diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2 (patch) | |
tree | d3bb9f5d25a2dc09ca81adecf39621d871534297 /kalzium | |
download | tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.tar.gz tdeedu-ce599e4f9f94b4eb00c1b5edb85bce5431ab3df2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeedu@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kalzium')
300 files changed, 23072 insertions, 0 deletions
diff --git a/kalzium/ChangeLog b/kalzium/ChangeLog new file mode 100644 index 00000000..61d29e3a --- /dev/null +++ b/kalzium/ChangeLog @@ -0,0 +1,30 @@ +*** Changes after Kalzium Hydrogen *** +Change: + - Make the plot window always plot on changes of setting + (No more having to press the Plot button.) + +Add: + - The spectrum dialog + - The table now has a small gap over the rare earth + - The isotope table provides now more data + - halflife-periods + - weight + - number of neutrons + - abundance + - alpha-decay + - betadecay (both plus and minus) + - spin + - magnetic moment + - The documentation has been overhauled + - The menustructure is now more consistent + - One icon has been added + - Make the mainwidget a QScrollView. This make sizehandling easier + - Improved layout of the detailed information dialog + - Added a widget which shows you a table of the isotopes + - Added EqChem, a chemical equation solver + - Added several glossary-items + - Display no legend when the No Color-mode is choosen + - The dialogboxes now have a help-button which will open the + correct page in the help + - The molecule parser for the weight calculator. + - adding the abundance of an element in a crustal rock (measured in ppm) diff --git a/kalzium/Makefile.am b/kalzium/Makefile.am new file mode 100644 index 00000000..294144f0 --- /dev/null +++ b/kalzium/Makefile.am @@ -0,0 +1,6 @@ +SUBDIRS = src + +AUTOMAKE_OPTIONS = foreign + +DOXYGEN_REFERENCES = kdeui kdecore kfile libkdeedu +include ../admin/Doxyfile.am diff --git a/kalzium/README.packagers b/kalzium/README.packagers new file mode 100644 index 00000000..85f705b2 --- /dev/null +++ b/kalzium/README.packagers @@ -0,0 +1,14 @@ +For full functionality (equation solver integration) Kalzium depends on Ocaml and the FaCiLe library. The FaciLe library is only used for compilation and for packagers. + +Ocaml +webpage: http://caml.inria.fr/about/index.en.html +download: http://caml.inria.fr/download.en.html + +FaCiLe +webpage: http://www.recherche.enac.fr/opti/facile/ +download: http://www.recherche.enac.fr/opti/facile/distrib/ + + +If these 2 dependencies are not met, Kalzium will not propose the equation solver in its Tools menu. + +The Kalzium developers diff --git a/kalzium/RELEASE-PLAN b/kalzium/RELEASE-PLAN new file mode 100644 index 00000000..f556379b --- /dev/null +++ b/kalzium/RELEASE-PLAN @@ -0,0 +1,70 @@ + Release plan + ============ + +Status: Under discussion + + +Overview +-------- + +Currently we plan for 3 releases: + + - A standalone release of Kalzium in August + - The release for KDE 3.5 + - The release for KDE 4.0 + +The reason for the standalone release is that we want user feedback +for the KDE 3.5 release. + +All details of the release plan are below the TODO items for the +respective release. + +Dates + +2005-08-07 Feature freeze. All features in the TODO for + version Helium should be done at the end of this day. + +2005-08-26 End of bug testing and fixing period. + +2005-08-30 Release of Kalzium Helium + + +================================================================ + Details of the release plan + + +* Standalone release of Kalzium + + After one week of testing and improving I would like to release + Kalzium (together with libkdeedu for the plotting and the glossary) + on the 30th of August (a tuesday). Two days later I leave to to + aKademy in Malaga, Spain. + + + Release criteria, prio 1: + - Fix all bugs on bugs.kde.org + - *must be* Update edu.kde.org/kalzium with screenshots + - *must be* increase the version number + + Release criteria, prio 2: + - Make the release very usable: + - Write the documentation + These prio 2 issues will be prio 1 for KDE 3.5 + + + Release mechanism: + - Announcement on kde-edu@kde.org + - Announcement on kalzium@kde.org + - Announcement on www.kde-apps.org + - Announcement on kde-announce@kde.org + - I will blog about the release and it goals + +* KDE 3.5-release + + Make use of the feedback we get of the standalone release + + The 3.5-release will probably be pretty identical with the + standalone-release, except for bug fixes and usability issues. + + +* KDE 4-release + + + Port to Qt4. We use a lot QValueList<T> and paintEvents, so I + expect some fun :) + + Switch to KCanvas2 so that scaling the table is possible? + IW: Scaling can be made possible without KCanvas2 as well. + + Implement the things in the TODO-file diff --git a/kalzium/TODO b/kalzium/TODO new file mode 100644 index 00000000..73186d48 --- /dev/null +++ b/kalzium/TODO @@ -0,0 +1,109 @@ + TODO for Kalzium 1.5 + =================== + +Bugs +---- + +* Miscellaneous bugs: + + Make use of the biological symbol. ---- + CN: I lost the "translation" though, will have to look after it. + CN: I have deactivated the drawingconde + + correct mass-rounding + presumably, the arg()-funktion now rounds wrong ----- + + +================================================================ + Future versions + +* Export to html and csv comes into my mind. Pretty easy I + guess. Something like that was in Kalzium of KDE 3.1 I + think. But my implementation sucked so much I removed it. + +* Add KHotNewStuff support (xml) so that a user can define which + dates are displayed in the timeline (see SOM) + +* Log-scale of the gradient + +* Plotting + + Add groups of elements, for example "Metals", 4th Period + transitionmetals and so on. The user can easily select them + and only plot the selected group + + More than one group should be plottable at once. + This would enable the user to compare two or more groups, + eg. 4th with 5th group + +* Add more than only one mode to Kalzium, eg a mode with simplified + user interface (less looks, easier menu structure, less information + in the infodialog) and a full-mode where everything is enabled. + +* There should be more data about the elements, for example which + chemitry-nobel-prize was won in that year (+/- 5 years or so) + +* Make use of hotnewstuff. In the detailinfodlg there should be + a weblookup. If the user click on a button Konq will start with + a page about the element. Of course, the user should be able + to decide which page. + For this we could create a simple editor and store it in xml. + on edu.kde.org we would enable KHNS so that users can share + their pages. Imaginge for example the different wikipedia-languages + +* Add the weblookup also in the glossary + +* Besides although for the "common user" is more easy to understand + the information in "... years", it's more correct and flexible in + scientific terms to use the scientific notation: ...x10e9 years. + +* Add lesson-mode? The idea is that a teacher could create xml-files + which can somehow be used as lessons. Perhaps something like + "find out how many element boild at 200 Degree Celsius and above. + With the information: Why is it so?" + +* Add experiental mode: A teacher defines experiments (in xml) where + fotos and texts are used to represent a experiment/task. Perhaps + combined with openoffice-files (charts and so on). Like in CheExp. + +* Add two comboboxes to the infodialog: That way the user can search + for an element by name and number. Like in CheExp + +* Thinking on people with some disabilities, it would be great if they can +select the elements on the grid by using cursor keys (or just tab key). + +* Perhaps there must be a KComboBox in the toolbar where you can select the +different views of the PTE. + +* There's no view of the natural occurrence of the elements. Look at +http://en.wikipedia.org/wiki/Periodic_table_(standard) and see the notes +about borders. + +* Spectrum-Classes + + Create an editor. The user enters some wavelength and Kalzium will + create a graphic from that data. + +* Some websites with a lot of information: +http://en.wikipedia.org/wiki/History_of_chemistry +http://en.wikipedia.org/wiki/Timeline_of_chemical_element_discovery +http://en.wikipedia.org/wiki/Nobel_Prize_in_chemistry +http://chemipedia.org/mediawiki/index.php/Hauptseite +http://physics.nist.gov/PhysRefData/Handbook/periodictable.htm + +Properties listed on my periodic table: +Page 1: +- electronconfig [DONE] +- Atomic radius (covalent, ionic, vdw [Semi-DONE] +- reduction potential +- EN [DONE, there are more values, other scales] +- abundance [Semi-Done] +- biological symbol [DONE] +- IUPAC-Name [DONE] +- number [DONE] +- oxidation-numer(s) [DONE, need to be checked] +- orbitals [DONE] + +Page 2: +- number of natural isotopes +- massenzahlen (# of neutrons) of the most important isotopes +- natural abundance of the isotopes +- first IE [DONE] +- density [DONE] +- SP and BP [DONE] +- Infos about the most important isotope [DONE but needs to be improved] diff --git a/kalzium/configure.in.bot b/kalzium/configure.in.bot new file mode 100644 index 00000000..6bc3c088 --- /dev/null +++ b/kalzium/configure.in.bot @@ -0,0 +1,26 @@ +if test x$eqchem_enabled = xno && test x$with_ocamlsolver != xno ; then + cat << EOF + +The Kalzium Chemical Equation Solver has been disabled. Possible +reasons of that: + +EOF + + if test "x$ocaml_installed" = "xno"; then + cat << EOF +* OCaml was not found. In order to have the Solver, you have to + install OCaml. You can get OCaml from http://pauillac.inria.fr/ocaml/. + +EOF + fi + + if test "x$facile_installed" = "xno"; then + cat << EOF +* The FaCiLe module for OCaml was not found. In order to have the Solver, + you have to install the FaCiLe module. You can get it from + http://www.recherche.enac.fr/opti/facile/. + +EOF + fi + +fi diff --git a/kalzium/configure.in.in b/kalzium/configure.in.in new file mode 100644 index 00000000..757485ad --- /dev/null +++ b/kalzium/configure.in.in @@ -0,0 +1,66 @@ +#MIN_CONFIG(3.3) + +ocaml_installed=no +facile_installed=no +eqchem_enabled=no + +AC_DEFUN([OCAML_PROG],[ + KDE_FIND_PATH(ocamlopt, OCAML, [$bindir], + [ + OCAML='' + ]) +]) + +AC_DEFUN([FACILE_PROG],[ + AC_REQUIRE([OCAML_PROG]) + + AC_MSG_CHECKING([if the facile constraint solver is installed]) + FACILE="`ocamlopt -where`/facile" + if test -d "$FACILE" ; then + eqchem_enabled=yes + AC_MSG_RESULT([yes]) + facile_installed=yes + else + eqchem_enabled=no + AC_MSG_RESULT([no]) + facile_installed=no + fi + + AC_SUBST([FACILE]) +]) + +AC_ARG_ENABLE( ocamlsolver, + [ --disable-ocamlsolver Disable support for the OCaml solver @<:@default=check@:>@]], + [ with_ocamlsolver=$enableval ], + [ with_ocamlsolver=check] ) + +if test "x$with_ocamlsolver" != xno; then + OCAML_PROG + if test -n "$OCAML"; then + ocaml_installed=yes + FACILE_PROG + fi + + AH_TEMPLATE(HAVE_FACILE, facile solver available?) + + EQCHEM_SUB= + OCAMLLIB= + EQCHEM_LDADD= + if test "$eqchem_enabled" = "yes"; then + EQCHEM_SUB=solver + OCAMLLIB=`ocamlc -where` + FACILELIB=`ocamlc -where`/facile + EQCHEM_LDADD="-lasmrun -lstr -lnums -lm -ldl solver.o modwrap.o" + + AC_DEFINE(HAVE_FACILE, 1) + fi + + AC_SUBST(EQCHEM_SUB) + AC_SUBST(OCAMLLIB) + AC_SUBST(FACILELIB) + AC_SUBST(EQCHEM_LDADD) + + if test "$eqchem_enabled" = "yes"; then + with_ocamlsolver=yes + fi +fi diff --git a/kalzium/src/Makefile.am b/kalzium/src/Makefile.am new file mode 100644 index 00000000..7e5b3295 --- /dev/null +++ b/kalzium/src/Makefile.am @@ -0,0 +1,100 @@ +# set the include path for X, qt and KDE +INCLUDES= -I$(srcdir)/../../libkdeedu/kdeeduplot -I$(srcdir)/../../libkdeedu/kdeeduui $(all_includes) + +bin_PROGRAMS = kalzium +kalzium_SOURCES = eqresult.cpp eqchemview.cpp kalzium.cpp \ + main.cpp \ + periodictableview.cpp \ + element.cpp \ + prefs.kcfgc \ + settings_colors.ui \ + settings_misc.ui \ + settings_units.ui \ + detailinfodlg.cpp \ + orbitswidget.cpp \ + plotwidget.cpp \ + elementdataviewer.cpp \ + plotsetupwidget.ui \ + detailedgraphicaloverview.cpp \ + molcalcwidgetbase.ui \ + molcalcwidget.cpp \ + timewidget.ui \ + timewidget_impl.cpp \ + somwidget.ui \ + somwidget_impl.cpp \ + kalziumtip.cpp \ + spectrum.cpp \ + isotope.cpp \ + kalziumdataobject.cpp \ + spectrumwidget.cpp \ + exporter.cpp \ + spectrumview.ui \ + spectrumviewimpl.cpp \ + kalziumutils.cpp \ + parser.cpp \ + moleculeparser.cpp \ + tempunit.cpp + +kalzium_LDADD = ../../libkdeedu/kdeeduplot/libkdeeduplot.la ../../libkdeedu/kdeeduui/libkdeeduui.la $(LIB_KIO) $(LIB_KDEUI) $(LIB_KHTML) -L$(OCAMLLIB) -L$(FACILELIB) $(EQCHEM_LDADD) +KDE_CXXFLAGS = -D_ISOC99_SOURCE + +SUBDIRS = icons elementpics data $(EQCHEM_SUB) + +EXTRA_DIST = main.cpp \ + kalzium.cpp kalzium.h \ + periodictableview.cpp periodictableview.h \ + element.cpp element.h \ + settings_colors.ui \ + settings_misc.ui \ + detailinfodlg.cpp detailinfodlg.h \ + orbitswidget.cpp orbitswidget.h \ + plotwidget.cpp plotwidget.h \ + elementdataviewer.cpp elementdataviewer.h \ + detailedgraphicaloverview.cpp detailedgraphicaloverview.h \ + molcalcwidget.cpp molcalcwidget.h \ + timewidget.ui \ + timewidget_impl.cpp timewidget_impl.h \ + somwidget.ui \ + somwidget_impl.cpp somwidget_impl.h \ + spectrum.cpp spectrum.h \ + isotope.cpp isotope.h \ + kalziumdataobject.cpp kalziumdataobject.h \ + spectrumwidget.cpp spectrumwidget.h \ + exporter.cpp exporter.h \ + spectrumview.ui \ + spectrumviewimpl.cpp spectrumviewimpl.h \ + kalziumutils.cpp kalziumutils.h \ + parser.cpp parser.h \ + moleculeparser.cpp moleculeparser.h \ + tempunit.cpp tempunit.h + +METASOURCES = AUTO + +xdg_apps_DATA = kalzium.desktop +kde_kcfg_DATA = kalzium.kcfg + +rcuidir = $(kde_datadir)/kalzium +rcui_DATA = kalziumui.rc + +KDE_ICON = AUTO + +# the library search path. +kalzium_LDFLAGS = $(all_libraries) $(KDE_RPATH) + +#this RegExp-monster grep for <name origin=foo">bar</name> and puts the i18n() around foo and bar +messages-old: rc.cpp + cat data/data.xml | grep name| sed -e 's/< *name *origin *= *"\([^\"]*\)\">\([^<]*\)<\/ *name *>/I18N_NOOP(\"\1\"); I18N_NOOP(\"\2\");/;s/I18N_NOOP("");//g' | grep I18N_NOOP >> rc.cpp + cat data/knowledge.xml | grep name| sed -e 's/< *name *>\([^<]*\)<\/ *name *>/I18N_NOOP(\"\1\");/' >> rc.cpp + cat data/knowledge.xml | grep desc | sed -e 's/< *desc *>\([^<]*\)<\/ *desc *>/I18N_NOOP(\"\1\");/' >> rc.cpp + cat data/knowledge.xml | grep refitem | sed -e 's/< *refitem *>\([^<]*\)<\/ *refitem *>/I18N_NOOP(\"\1\");/' >> rc.cpp + cat data/tools.xml | grep name | sed -e 's/< *name *>\([^<]*\)<\/ *name *>/I18N_NOOP(\"\1\");/' >> rc.cpp + cat data/tools.xml | grep desc | sed -e 's/< *desc *>\([^<]*\)<\/ *desc *>/I18N_NOOP(\"\1\");/' >> rc.cpp + $(XGETTEXT) *.cpp -o $(podir)/kalzium.pot + rm -f rc.cpp # for testing + +messages: rc.cpp + $(EXTRACTATTR) --attr=name,origin data/data.xml >> rc.cpp + $(EXTRACTRC) --tag-group=none --tag=name data/data.xml >> rc.cpp + $(EXTRACTRC) --tag-group=none --tag=name --tag=desc --tag=refitem data/knowledge.xml >> rc.cpp + $(EXTRACTRC) --tag-group=none --tag=name --tag=desc data/tools.xml >> rc.cpp + $(XGETTEXT) *.cpp -o $(podir)/kalzium.pot diff --git a/kalzium/src/data/Makefile.am b/kalzium/src/data/Makefile.am new file mode 100644 index 00000000..4377f0ac --- /dev/null +++ b/kalzium/src/data/Makefile.am @@ -0,0 +1,6 @@ +SUBDIRS = $(AUTODIRS) + +xml_DATA = bg.jpg data.xml knowledge.xml tools.xml + +xmldir = $(kde_datadir)/kalzium/data + diff --git a/kalzium/src/data/bg.jpg b/kalzium/src/data/bg.jpg Binary files differnew file mode 100644 index 00000000..0729fe39 --- /dev/null +++ b/kalzium/src/data/bg.jpg diff --git a/kalzium/src/data/data.dtd b/kalzium/src/data/data.dtd new file mode 100644 index 00000000..93a7878b --- /dev/null +++ b/kalzium/src/data/data.dtd @@ -0,0 +1,23 @@ +<!ELEMENT kalzium (element+)> +<!ELEMENT element (number, name, period, symbol, spectra?, mass, acidicbehaviour, block, date, biologicalmeaning?, group, electronaffinity?, electronegativity?, meltingpoint?, boilingpoint?, isotopes?, density?, ionisationenergy?, radius?, orbits?, oxydation?, family?, abundance?, crystalstructure?)> +<!ELEMENT radius (covalent?, atomic?, vdw?, bondxx?, ionic?)> +<!ELEMENT ionisationenergy (energy+)> +<!ELEMENT isotopes (isotope+)> +<!ELEMENT spectra (spectrum+)> +<!ELEMENT name ANY> +<!ATTLIST name + origin CDATA #IMPLIED> +<!ELEMENT spectrum ANY> +<!ATTLIST spectrum + intensity CDATA #IMPLIED + wavelength CDATA #IMPLIED + aki CDATA #IMPLIED + energy1 CDATA #IMPLIED + energy2 CDATA #IMPLIED + electronegativity1 CDATA #IMPLIED + electronegativity2 CDATA #IMPLIED + term1 CDATA #IMPLIED + term2 CDATA #IMPLIED + J1 CDATA #IMPLIED + J2 CDATA #IMPLIED> +<!ENTITY deg "°"> diff --git a/kalzium/src/data/data.xml b/kalzium/src/data/data.xml new file mode 100644 index 00000000..47053fa7 --- /dev/null +++ b/kalzium/src/data/data.xml @@ -0,0 +1,4879 @@ +<?xml version="1.0"?> +<!-- +The data for the isotopes is taken from: +Lexikon der Physik, 2000 Bertelsmann Lexikon Verlag GmbH +D. Mende und G. Simon, Physik - Gleichungen und Tabellen, 13. Auflage, 2001 Fachbuchverlag Leipzig +--> +<!DOCTYPE kalzium SYSTEM "data.dtd"> +<kalzium> + <element> + <number>1</number> + <name origin="Greek 'hydro' and 'gennao' for 'forms water'">Hydrogen</name> + <symbol>H</symbol> + <period>1</period> + <spectra> + <spectrum intensity="50" wavelength="949.7430" aki="0.34375" energy1="0.0000" energy2="105291.6443" electronconfig1="1s" electronconfig2="5p" term1="2S" term2="2P°" J1="1/2" J2="1/2.3/2" /> + <spectrum intensity="100" wavelength="972.5367" aki="0.6819" energy1="0.0000" energy2="102823.8791" electronconfig1="1s" electronconfig2="4p" term1="2S" term2="2P°" J1="1/2" J2="1/2.3/2" /> + <spectrum intensity="300" wavelength="1025.7222" aki="1.6725" energy1="0.0000" energy2="97492.2835" electronconfig1="1s" electronconfig2="3p" term1="2S" term2="2P°" J1="1/2" J2="1/2.3/2" /> + <spectrum intensity="1000" wavelength="1215.66824" aki="6.2648" energy1="0.0000" energy2="82259.2850" electronconfig1="1s" electronconfig2="2p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="500" wavelength="1215.67364" aki="6.2649" energy1="0.0000" energy2="82258.9191" electronconfig1="1s" electronconfig2="2p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="30" wavelength="4861.2786" aki="0.1719" energy1="82258.9191" energy2="102823.8942" electronconfig1="2p" electronconfig2="4d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="10" wavelength="4861.2870" aki="0.0967" energy1="82258.9544" energy2="102823.8943" electronconfig1="2s" electronconfig2="4p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="60" wavelength="4861.3615" aki="0.2063" energy1="82259.2850" energy2="102823.9095" electronconfig1="2p" electronconfig2="4d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="90" wavelength="6562.7110" aki="0.5388" energy1="82258.9191" energy2="97492.3195" electronconfig1="2p" electronconfig2="3d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="30" wavelength="6562.7248" aki="0.2245" energy1="82258.9544" energy2="97492.3196" electronconfig1="2s" electronconfig2="3p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + </spectra> + <mass>1.00794</mass> + <block>s</block> + <acidicbehaviour>1</acidicbehaviour> + <date scientist="C. Cavendish">1766</date> + <biologicalmeaning></biologicalmeaning> + <group>1</group> + <electronaffinity>-73</electronaffinity> + <electronegativity>2.1</electronegativity> + <meltingpoint>13.81</meltingpoint> + <boilingpoint>20.28</boilingpoint> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="+2.792846" halflife="" halflifeformat="seconds" weight="1.007825" neutron="0" percentage="99.985" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1+" magmoment="+0.857438" halflife="" halflifeformat="seconds" weight="2.0141" neutron="1" percentage="0.015" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.01861" ecpercentage="" ecdecay="" spin="1/2+" magmoment="+2.978960" halflife="12.3" halflifeformat="years" weight="3.016049" neutron="2" pecentage="" /> + </isotopes> + <density>0.084</density> + <ionisationenergy> + <energy>13.598</energy> + </ionisationenergy> + <radius> + <covalent>37.3</covalent> + <atomic>25</atomic> + <vdw>120</vdw> + <bondxx>74.130</bondxx> + <ionic charge="-1">208</ionic> + </radius> + <orbits>1s1</orbits> + <oxydation>+1.(-1)</oxydation> + <family>Non-Metal</family> + <abundance>1520</abundance> + </element> + <element> + <number>2</number> + <name origin="The Greek word for the sun was 'helios'">Helium</name> + <symbol>He</symbol> + <period>1</period> + <spectra> + <spectrum intensity="100" wavelength="522.21309" aki="2.4356" energy1="0.000" energy2="191492.7120" electronconfig1="1s2" electronconfig2="1s4p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="400" wavelength="537.02992" aki="5.6634" energy1="0.000" energy2="186209.3651" electronconfig1="1s2" electronconfig2="1s3p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="584.33436" aki="17.989" energy1="0.000" energy2="171134.8970" electronconfig1="1s2" electronconfig2="1s2p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="60" wavelength="3888.6046" aki="0.0947" energy1="159855.9745" energy2="185564.8547" electronconfig1="1s2s" electronconfig2="1s3p" term1="3S" term2="3P°" J1="1" J2="0" /> + <spectrum intensity="200" wavelength="3888.6456" aki="0.0947" energy1="159855.9745" energy2="185564.5840" electronconfig1="1s2s" electronconfig2="1s3p" term1="3S" term2="3P°" J1="1" J2="1" /> + <spectrum intensity="300" wavelength="3888.6489" aki="0.0947" energy1="159855.9745" energy2="185564.5620" electronconfig1="1s2s" electronconfig2="1s3p" term1="3S" term2="3P°" J1="1" J2="2" /> + <spectrum intensity="500" wavelength="5875.6148" aki="0.7070" energy1="169086.7666" energy2="186101.5463" electronconfig1="1s2p" electronconfig2="1s3d" term1="3P°" term2="3D" J1="2" J2="3" /> + <spectrum intensity="250" wavelength="5875.6404" aki="0.5303" energy1="169086.8430" energy2="186101.5488" electronconfig1="1s2p" electronconfig2="1s3d" term1="3P°" term2="3D" J1="1" J2="2" /> + <spectrum intensity="120" wavelength="5875.9663" aki="0.3927" energy1="169087.8309" energy2="186101.5930" electronconfig1="1s2p" electronconfig2="1s3d" term1="3P°" term2="3D" J1="0" J2="1" /> + <spectrum intensity="200" wavelength="6678.1517" aki="0.6369" energy1="171134.8970" energy2="186104.9668" electronconfig1="1s2p" electronconfig2="1s3d" term1="1P°" term2="1D" J1="1" J2="2" /> + <spectrum intensity="100" wavelength="7065.1771" aki="0.1547" energy1="169086.7666" energy2="183236.7918" electronconfig1="1s2p" electronconfig2="1s3s" term1="3P°" term2="3S" J1="2" J2="1" /> + <spectrum intensity="60" wavelength="7065.2153" aki="0.0928" energy1="169086.8430" energy2="183236.7918" electronconfig1="1s2p" electronconfig2="1s3s" term1="3P°" term2="3S" J1="1" J2="1" /> + <spectrum intensity="20" wavelength="7065.7086" aki="0.0309" energy1="169087.8309" energy2="183236.7918" electronconfig1="1s2p" electronconfig2="1s3s" term1="3P°" term2="3S" J1="0" J2="1" /> + <spectrum intensity="50" wavelength="7281.3507" aki="0.1830" energy1="171134.8970" energy2="184864.8294" electronconfig1="1s2p" electronconfig2="1s3s" term1="1P°" term2="1S" J1="1" J2="0" /> + <spectrum intensity="150" wavelength="10829.0911" aki="0.1022" energy1="159855.9745" energy2="169087.8309" electronconfig1="1s2s" electronconfig2="1s2p" term1="3S" term2="3P°" J1="1" J2="0" /> + <spectrum intensity="500" wavelength="10830.2501" aki="0.1021" energy1="159855.9745" energy2="169086.8430" electronconfig1="1s2s" electronconfig2="1s2p" term1="3S" term2="3P°" J1="1" J2="1" /> + <spectrum intensity="1000" wavelength="10830.3398" aki="0.1021" energy1="159855.9745" energy2="169086.7666" electronconfig1="1s2s" electronconfig2="1s2p" term1="3S" term2="3P°" J1="1" J2="2" /> + <spectrum intensity="500" wavelength="20581.287" aki="0.0197" energy1="166277.4403" energy2="171134.8970" electronconfig1="1s2s" electronconfig2="1s2p" term1="1S" term2="1P°" J1="0" J2="1" /> + </spectra> + <mass>4.002602</mass> + <block>p</block> + <acidicbehaviour>1</acidicbehaviour> + <date scientist="P. J. Janssen. J. N. Lockyer">1895</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>21</electronaffinity> + <electronegativity></electronegativity> + <meltingpoint>0.95</meltingpoint> + <boilingpoint>4.216</boilingpoint> + <density>0.1785</density> + <ionisationenergy> + <energy>24.587 </energy> + <energy>54.417</energy> + </ionisationenergy> + <radius> + <covalent>32</covalent> + <atomic>31</atomic> + <vdw>140</vdw> + <bondxx>300</bondxx> + </radius> + <orbits>1s2</orbits> + <oxydation>0</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" halflife="" spin="1/2+" magmoment="-2.127624" halflifeformat="seconds" weight="3.01603" neutron="1" percentage="0.000138" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="4.0026" neutron="2" percentage="99.999862" /> + </isotopes> + <family>Noblegas</family> + <crystalstructure>hcp</crystalstructure> + </element> + <element> + <number>3</number> + <name origin="Greek 'lithos' means 'stone'">Lithium</name> + <symbol>Li</symbol> + <period>2</period> + <mass>6.941</mass> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <spectra> + <spectrum intensity="15" wavelength="4602.831" aki="0.223" energy1="14903.622" energy2="36623.297" electronconfig1="2p" electronconfig2="4d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="30" wavelength="4602.898" aki="0.223" energy1="14903.957" energy2="36623.312" electronconfig1="2p" electronconfig2="4d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="300" wavelength="6103.542" aki="0.686" energy1="14903.622" energy2="31283.018" electronconfig1="2p" electronconfig2="3d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="400" wavelength="6103.654" aki="0.686" energy1="14903.957" energy2="31283.053" electronconfig1="2p" electronconfig2="3d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="500" wavelength="6707.775" aki="0.369" energy1="0.000" energy2="14903.957" electronconfig1="2s" electronconfig2="2p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="6707.926" aki="0.369" energy1="0.000" energy2="14903.622" electronconfig1="2s" electronconfig2="2p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="150" wavelength="8126.232" aki="0.349" energy1="14903.622" energy2="27206.066" electronconfig1="2p" electronconfig2="3s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="300" wavelength="8126.453" aki="0.349" energy1="14903.957" energy2="27206.066" electronconfig1="2p" electronconfig2="3s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + <spectrum intensity="10" wavelength="26877.67" aki="0.038" energy1="27206.066" energy2="30925.613" electronconfig1="3s" electronconfig2="3p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="5" wavelength="26878.36" aki="0.038" energy1="27206.066" energy2="30925.517" electronconfig1="3s" electronconfig2="3p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + </spectra> + <date scientist="A. Arfvedson">1817</date> + <biologicalmeaning>5</biologicalmeaning> + <group>1</group> + <electronaffinity>-60</electronaffinity> + <electronegativity>0.98</electronegativity> + <meltingpoint>453.7</meltingpoint> + <boilingpoint>1615</boilingpoint> + <density>0.53</density> + <ionisationenergy> + <energy>5.392 </energy> + <energy>75.980</energy> + </ionisationenergy> + <radius> + <covalent>134</covalent> + <atomic>145</atomic> + <vdw>182</vdw> + <bondxx>303.9</bondxx> + <ionic charge="+1">74</ionic> + </radius> + <orbits>1s2 2s1</orbits> + <oxydation>+1</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1+" magmoment="+0.822056" halflife="" halflifeformat="seconds" weight="6.015121" neutron="3" percentage="7.5" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+3.25644" halflife="" halflifeformat="seconds" weight="7.016003" neutron="4" percentage="92.5" /> + </isotopes> + <family>Alkali_Earth</family> + <crystalstructure>bcc</crystalstructure> + <abundance>18</abundance> + </element> + <element> + <number>4</number> + <name origin="Greek 'beryllos' for 'light-green stone'">Beryllium</name> + <symbol>Be</symbol> + <period>2</period> + <mass>9.012182</mass> + <block>s</block> + <acidicbehaviour>2</acidicbehaviour> + <aggregation>0 </aggregation> + <date scientist="">1798</date> + <biologicalmeaning>3</biologicalmeaning> + <group>2</group> + <electronaffinity>19</electronaffinity> + <electronegativity>1.57</electronegativity> + <meltingpoint>1560</meltingpoint> + <boilingpoint>3243</boilingpoint> + <density>1.85</density> + <ionisationenergy> + <energy>9.322 </energy> + <energy>18.211</energy> + </ionisationenergy> + <radius> + <covalent>90</covalent> + <atomic>105</atomic> + <bondxx>222.6</bondxx> + <vdw></vdw> + <ionic charge="+2">35</ionic> + </radius> + <orbits>1s2 2s2</orbits> + <oxydation>+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.862" spin="3/2-" magmoment="" halflife="4611168" halflifeformat="seconds" weight="7.0169" neutron="3" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="-1.1776" halflife="" halflifeformat="seconds" weight="9.012182" neutron="5" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.555" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="1600000" halflifeformat="years" weight="10.01354" neutron="6" percentage="" /> + </isotopes> + <family>Alkaline_Earth</family> + <crystalstructure>hdp</crystalstructure> + <abundance>2</abundance> + <spectra> + <spectrum intensity="100" wavelength="1661.478" aki="0.0726" energy1="0.000" energy2="60187.34" electronconfig1="2s2" electronconfig2="2s3p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="2348.610" aki="5.53" energy1="0.000" energy2="42565.35" electronconfig1="2s2" electronconfig2="2s2p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="100" wavelength="2494.728" aki="1.6" energy1="21981.27" energy2="62053.72" electronconfig1="2s2p" electronconfig2="2s3d" term1="3P°" term2="3D" J1="2" J2="1.2.3" /> + <spectrum intensity="100" wavelength="2650.454" aki="4.24*" energy1="21978.925" energy2="59697.08" electronconfig1="2s2p" electronconfig2="2p2" term1="3P°" term2="3P" J1="1" J2="2" /> + <spectrum intensity="60" wavelength="2650.550" aki="4.24*" energy1="21978.28" energy2="59695.07" electronconfig1="2s2p" electronconfig2="2p2" term1="3P°" term2="3P" J1="0" J2="1" /> + <spectrum intensity="200*" wavelength="2650.613" aki="4.24*" energy1="21978.925" energy2="59695.07" electronconfig1="2s2p" electronconfig2="2p2" term1="3P°" term2="3P" J1="1" J2="1" /> + <spectrum intensity="200*" wavelength="2650.619" aki="4.24*" energy1="21981.27" energy2="59697.08" electronconfig1="2s2p" electronconfig2="2p2" term1="3P°" term2="3P" J1="2" J2="2" /> + <spectrum intensity="60" wavelength="2650.694" aki="4.24*" energy1="21978.925" energy2="59693.65" electronconfig1="2s2p" electronconfig2="2p2" term1="3P°" term2="3P" J1="1" J2="0" /> + <spectrum intensity="100" wavelength="2650.760" aki="4.24*" energy1="21981.27" energy2="59695.07" electronconfig1="2s2p" electronconfig2="2p2" term1="3P°" term2="3P" J1="2" J2="1" /> + <spectrum intensity="12" wavelength="4572.664" aki="0.79" energy1="42565.35" energy2="64428.31" electronconfig1="2s2p" electronconfig2="2s3d" term1="1P°" term2="1D" J1="1" J2="2" /> + </spectra> + </element> + <element> + <number>5</number> + <name origin="Boron means 'Bor(ax) + (carb)on'. It is found in borax and behaves a lot like carbon">Boron</name> + <symbol>B</symbol> + <period>2</period> + <mass>10.811</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <date scientist="Louis Joseph Gay-Lussac. Louis Jacques Thenard">1808 </date> + <biologicalmeaning>3</biologicalmeaning> + <group>3</group> + <electronaffinity>-27</electronaffinity> + <electronegativity>2.04</electronegativity> + <meltingpoint>2365</meltingpoint> + <boilingpoint>4275</boilingpoint> + <density>2.46</density> + <ionisationenergy> + <energy>8.298 </energy> + <energy>25.154</energy> + <energy>37.9</energy> + </ionisationenergy> + <spectra> + <spectrum intensity="800" wavelength="1825.894" aki="1.70" energy1="0.000" energy2="54767.698" electronconfig1="2s22p" electronconfig2="2s23d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="1826.400" aki="2.04" energy1="15.287" energy2="54767.844" electronconfig1="2s22p" electronconfig2="2s23d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="400" wavelength="2088.889" aki="0.361" energy1="0.000" energy2="47857.127" electronconfig1="2s22p" electronconfig2="2s2p2" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="500" wavelength="2089.570" aki="0.432" energy1="15.287" energy2="47856.807" electronconfig1="2s22p" electronconfig2="2s2p2" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="500" wavelength="2496.769" aki="0.837" energy1="0.000" energy2="40039.695" electronconfig1="2s22p" electronconfig2="2s23s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="800" wavelength="2497.722" aki="1.67" energy1="15.287" energy2="40039.695" electronconfig1="2s22p" electronconfig2="2s23s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + </spectra> + <radius> + <covalent>82</covalent> + <atomic>85</atomic> + <bondxx>158.9</bondxx> + <vdw></vdw> + <ionic charge="+3">23</ionic> + </radius> + <abundance>9</abundance> + <orbits>1s2 2s2 2p1</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3+" magmoment="+1.80065" halflife="" halflifeformat="seconds" weight="10.0129" neutron="5" percentage="19.9" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+2.688637" halflife="" halflifeformat="seconds" weight="11.009305" neutron="6" percentage="80.1" /> + </isotopes> + <family>Metalloids</family> + <crystalstructure>rh</crystalstructure> + </element> + <element> + <number>6</number> + <name origin="Latin 'carboneum' for carbon">Carbon</name> + <symbol>C</symbol> + <period>2</period> + <mass>12.0107</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <spectra> + <spectrum intensity="400" wavelength="1277.2452" aki="1.27" energy1="0.00000" energy2="78293.50" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3d" term1="3P" term2="3D°" J1="0" J2="1" /> + <spectrum intensity="800" wavelength="1277.2824" aki="1.73" energy1="16.41671" energy2="78307.62" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3d" term1="3P" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="200" wavelength="1277.5131" aki="0.912" energy1="16.41671" energy2="78293.50" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3d" term1="3P" term2="3D°" J1="1" J2="1" /> + <spectrum intensity="1000" wavelength="1277.5497" aki="2.31" energy1="43.41350" energy2="78318.23" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3d" term1="3P" term2="3D°" J1="2" J2="3" /> + <spectrum intensity="800" wavelength="1280.3330" aki="0.577" energy1="43.41350" energy2="78148.09" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)4s" term1="3P" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="500" wavelength="1560.682" aki="0.908" energy1="16.41671" energy2="64090.97" electronconfig1="2s22p2" electronconfig2="2s2p3" term1="3P" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="200" wavelength="1560.709" aki="0.505" energy1="16.41671" energy2="64089.86" electronconfig1="2s22p2" electronconfig2="2s2p3" term1="3P" term2="3D°" J1="1" J2="1" /> + <spectrum intensity="600" wavelength="1561.438" aki="1.21" energy1="43.41350" energy2="64086.95" electronconfig1="2s22p2" electronconfig2="2s2p3" term1="3P" term2="3D°" J1="2" J2="3" /> + <spectrum intensity="500" wavelength="1656.267" aki="0.858" energy1="16.41671" energy2="60393.15" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3s" term1="3P" term2="3P°" J1="1" J2="2" /> + <spectrum intensity="400" wavelength="1656.928" aki="1.13" energy1="0.00000" energy2="60352.64" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3s" term1="3P" term2="3P°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="1657.008" aki="2.52" energy1="43.41350" energy2="60393.15" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3s" term1="3P" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="400" wavelength="1657.379" aki="0.864" energy1="16.41671" energy2="60352.64" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3s" term1="3P" term2="3P°" J1="1" J2="1" /> + <spectrum intensity="400" wavelength="1657.907" aki="3.43" energy1="16.41671" energy2="60333.43" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3s" term1="3P" term2="3P°" J1="1" J2="0" /> + <spectrum intensity="500" wavelength="1658.121" aki="1.44" energy1="43.41350" energy2="60352.64" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3s" term1="3P" term2="3P°" J1="2" J2="1" /> + <spectrum intensity="500" wavelength="1751.827" aki="0.907" energy1="21648.02" energy2="78731.28" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3d" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="1930.906" aki="3.51" energy1="10192.66" energy2="61981.82" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3s" term1="1D" term2="1P°" J1="2" J2="1" /> + <spectrum intensity="400" wavelength="2478.561" aki="0.340" energy1="21648.02" energy2="61981.82" electronconfig1="2s22p2" electronconfig2="2s22p(2P°)3s" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="250" wavelength="8335.15" aki="0.351" energy1="61981.82" energy2="73975.91" electronconfig1="2s22p(2P°)3s" electronconfig2="2s22p(2P°)3p" term1="1P°" term2="1S" J1="1" J2="0" /> + <spectrum intensity="400" wavelength="9405.73" aki="0.291" energy1="61981.82" energy2="72610.73" electronconfig1="2s22p(2P°)3s" electronconfig2="2s22p(2P°)3p" term1="1P°" term2="1D" J1="1" J2="2" /> + <spectrum intensity="140" wavelength="11753.32" aki="0.263" energy1="69744.03" energy2="78249.93" electronconfig1="2s22p(2P°)3p" electronconfig2="2s22p(2P°)3d" term1="3D" term2="3F°" J1="3" J2="4" /> + <spectrum intensity="101" wavelength="11754.76" aki="0.240" energy1="69710.67" energy2="78215.50" electronconfig1="2s22p(2P°)3p" electronconfig2="2s22p(2P°)3d" term1="3D" term2="3F°" J1="2" J2="3" /> + </spectra> + <date scientist="">0</date> + <biologicalmeaning>1</biologicalmeaning> + <group>4</group> + <electronaffinity>-122</electronaffinity> + <electronegativity>2.55</electronegativity> + <meltingpoint>3825</meltingpoint> + <boilingpoint>5100</boilingpoint> + <density>3.51</density> + <ionisationenergy> + <energy>11.260 </energy> + <energy>24.376</energy> + </ionisationenergy> + <radius> + <covalent>77.2</covalent> + <atomic>70</atomic> + <vdw>170</vdw> + <bondxx>142.6</bondxx> + <ionic charge="+4">16</ionic> + </radius> + <abundance>180</abundance> + <orbits>1s2 2s2 2p2</orbits> + <oxydation>-4.+2.+4</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="100.0" betaplusdecay="0.96" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="" halflife="1223" halflifeformat="seconds" weight="11.01143" neutron="5" pecentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="12" neutron="6" percentage="98.89" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" halflife="" spin="1/2-" magmoment="+0.702411" halflifeformat="seconds" weight="13.003355" neutron="7" percentage="1.11" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.15648" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="5730" halflifeformat="years" weight="14.00324" neutron="8" percentage="" /> + </isotopes> + <family>Non-Metal</family> + </element> + <element> + <number>7</number> + <name origin="Latin 'nitrogenium' ('forms saltpeter')">Nitrogen</name> + <symbol>N</symbol> + <period>2</period> + <mass>14.0067</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <spectra> + <spectrum intensity="1000" wavelength="1199.550" aki="4.07" energy1="0.000" energy2="83364.620" electronconfig1="2s22p3" electronconfig2="2s22p2(3P)3s" term1="4S°" term2="4P" J1="3/2" J2="5/2" /> + <spectrum intensity="700" wavelength="1200.223" aki="4.02" energy1="0.000" energy2="83317.830" electronconfig1="2s22p3" electronconfig2="2s22p2(3P)3s" term1="4S°" term2="4P" J1="3/2" J2="3/2" /> + <spectrum intensity="300" wavelength="1200.710" aki="4.00" energy1="0.000" energy2="83284.070" electronconfig1="2s22p3" electronconfig2="2s22p2(3P)3s" term1="4S°" term2="4P" J1="3/2" J2="1/2" /> + <spectrum intensity="250" wavelength="1243.179" aki="3.21" energy1="19224.464" energy2="99663.427" electronconfig1="2s22p3" electronconfig2="2s22p2(1D)3s" term1="2D°" term2="2D" J1="5/2" J2="5/2" /> + <spectrum intensity="250" wavelength="1492.625" aki="3.13" energy1="19224.464" energy2="86220.510" electronconfig1="2s22p3" electronconfig2="2s22p2(3P)3s" term1="2D°" term2="2P" J1="5/2" J2="3/2" /> + <spectrum intensity="200" wavelength="1742.729" aki="1.16" energy1="28839.306" energy2="86220.510" electronconfig1="2s22p3" electronconfig2="2s22p2(3P)3s" term1="2P°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="200" wavelength="7442.29" aki="0.124" energy1="83317.830" energy2="96750.840" electronconfig1="2s22p2(3P)3s" electronconfig2="2s22p2(3P)3p" term1="4P" term2="4S°" J1="3/2" J2="3/2" /> + <spectrum intensity="200" wavelength="7468.31" aki="0.193" energy1="83364.620" energy2="96750.840" electronconfig1="2s22p2(3P)3s" electronconfig2="2s22p2(3P)3p" term1="4P" term2="4S°" J1="5/2" J2="3/2" /> + <spectrum intensity="150" wavelength="8680.28" aki="0.246" energy1="83364.620" energy2="94881.820" electronconfig1="2s22p2(3P)3s" electronconfig2="2s22p2(3P)3p" term1="4P" term2="4D°" J1="5/2" J2="7/2" /> + <spectrum intensity="150" wavelength="8683.40" aki="0.180" energy1="83317.830" energy2="94830.890" electronconfig1="2s22p2(3P)3s" electronconfig2="2s22p2(3P)3p" term1="4P" term2="4D°" J1="3/2" J2="5/2" /> + <spectrum intensity="200" wavelength="12469.62" aki="0.228" energy1="96864.050" energy2="104881.350" electronconfig1="2s22p2(3P)3p" electronconfig2="2s22p2(3P)3d" term1="2D°" term2="2F" J1="5/2" J2="7/2" /> + <spectrum intensity="200" wavelength="13581.33" aki="0.0639" energy1="86220.510" energy2="93581.550" electronconfig1="2s22p2(3P)3s" electronconfig2="2s22p2(3P)3p" term1="2P" term2="2S°" J1="3/2" J2="1/2" /> + </spectra> + <date scientist="D. Rutherford">1772</date> + <biologicalmeaning>1</biologicalmeaning> + <group>5</group> + <electronaffinity>7</electronaffinity> + <electronegativity>3.04</electronegativity> + <meltingpoint>63.15</meltingpoint> + <boilingpoint>77.344</boilingpoint> + <density>1.17</density> + <ionisationenergy> + <energy>14.534 </energy> + <energy>29.602</energy> + </ionisationenergy> + <radius> + <covalent>75</covalent> + <atomic>65</atomic> + <vdw>155</vdw> + <ionic charge="+5">13</ionic> + <ionic charge="+3">16</ionic> + <ionic charge="+2">16</ionic> + <bondxx>109.76</bondxx> + </radius> + <abundance>19</abundance> + <orbits>1s2 2s2 2p3</orbits> + <oxydation>-3.(+1.+2.+3.+4.+5)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1+" magmoment="+0.403761" halflife="" halflifeformat="seconds" weight="14.0031" neutron="7" percentage="99.64" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="-0.283189" halflife="" halflifeformat="seconds" weight="15.0001" neutron="8" percentage="0.36" /> + </isotopes> + <family>Non-Metal</family> + <crystalstructure>hcp</crystalstructure> + </element> + <element> + <number>8</number> + <name origin="Latin 'oxygenium' (forms acids)">Oxygen</name> + <symbol>O</symbol> + <period>2</period> + <mass>15.9994</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <spectra> + <spectrum intensity="1000" wavelength="1302.168" aki="3.15" energy1="0.000" energy2="76794.978" electronconfig1="2s22p4" electronconfig2="2s22p3(4S°)3s" term1="3P" term2="3S°" J1="2" J2="1" /> + <spectrum intensity="700" wavelength="1304.858" aki="1.87" energy1="158.265" energy2="76794.978" electronconfig1="2s22p4" electronconfig2="2s22p3(4S°)3s" term1="3P" term2="3S°" J1="1" J2="1" /> + <spectrum intensity="300" wavelength="1306.029" aki="0.623" energy1="226.977" energy2="76794.978" electronconfig1="2s22p4" electronconfig2="2s22p3(4S°)3s" term1="3P" term2="3S°" J1="0" J2="1" /> + <spectrum intensity="300" wavelength="7771.94" aki="0.369" energy1="73768.200" energy2="86631.454" electronconfig1="2s22p3(4S°)3s" electronconfig2="2s22p3(4S°)3p" term1="5S°" term2="5P" J1="2" J2="3" /> + <spectrum intensity="250" wavelength="7774.17" aki="0.369" energy1="73768.200" energy2="86627.778" electronconfig1="2s22p3(4S°)3s" electronconfig2="2s22p3(4S°)3p" term1="5S°" term2="5P" J1="2" J2="2" /> + <spectrum intensity="250" wavelength="7775.39" aki="0.369" energy1="73768.200" energy2="86625.757" electronconfig1="2s22p3(4S°)3s" electronconfig2="2s22p3(4S°)3p" term1="5S°" term2="5P" J1="2" J2="1" /> + <spectrum intensity="250" wavelength="8446.25" aki="0.322" energy1="76794.978" energy2="88631.303" electronconfig1="2s22p3(4S°)3s" electronconfig2="2s22p3(4S°)3p" term1="3S°" term2="3P" J1="1" J2="0" /> + <spectrum intensity="300" wavelength="8446.36" aki="0.322" energy1="76794.978" energy2="88631.146" electronconfig1="2s22p3(4S°)3s" electronconfig2="2s22p3(4S°)3p" term1="3S°" term2="3P" J1="1" J2="2" /> + <spectrum intensity="300" wavelength="8446.76" aki="0.322" energy1="76794.978" energy2="88630.587" electronconfig1="2s22p3(4S°)3s" electronconfig2="2s22p3(4S°)3p" term1="3S°" term2="3P" J1="1" J2="1" /> + <spectrum intensity="200" wavelength="9266.01" aki="0.445" energy1="86631.454" energy2="97420.630" electronconfig1="2s22p3(4S°)3p" electronconfig2="2s22p3(4S°)3d" term1="5P" term2="5D°" J1="3" J2="4" /> + <spectrum intensity="250" wavelength="13163.89" aki="0.0714" energy1="88630.587" energy2="96225.049" electronconfig1="2s22p3(4S°)3p" electronconfig2="2s22p3(4S°)4s" term1="3P" term2="3S°" J1="1" J2="1" /> + <spectrum intensity="250" wavelength="13164.85" aki="0.119" energy1="88631.146" energy2="96225.049" electronconfig1="2s22p3(4S°)3p" electronconfig2="2s22p3(4S°)4s" term1="3P" term2="3S°" J1="2" J2="1" /> + </spectra> + <date scientist="J. Priestley">1774</date> + <biologicalmeaning>1</biologicalmeaning> + <group>6</group> + <electronaffinity>-141</electronaffinity> + <electronegativity>3.44</electronegativity> + <meltingpoint>54.8</meltingpoint> + <boilingpoint>90.188</boilingpoint> + <density>1.33</density> + <ionisationenergy> + <energy>13.618 </energy> + <energy>35.116</energy> + </ionisationenergy> + <radius> + <covalent>73</covalent> + <atomic>60</atomic> + <vdw>152</vdw> + <ionic charge="-2">146</ionic> + <bondxx>120.741</bondxx> + </radius> + <abundance>455000</abundance> + <orbits>1s2 2s2 2p4</orbits> + <oxydation>-2.(-1.+2)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="15.9949" neutron="8" percentage="99.756" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-1.89379" halflife="" halflifeformat="seconds" weight="16.9991" neutron="9" percentage="0.039" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="17.9992" neutron="10" percentage="0.205" /> + </isotopes> + <family>Non-Metal</family> + <crystalstructure>sc</crystalstructure> + </element> + <element> + <number>9</number> + <name origin="Latin 'fluere' ('floats')">Fluorine</name> + <symbol>F</symbol> + <period>2</period> + <mass>18.9984032</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <spectra> + <spectrum intensity="500" wavelength="951.870" aki="2.55" energy1="0.000" energy2="105056.283" electronconfig1="2s22p5" electronconfig2="2s22p4(3P)3s" term1="2P°" term2="2P" J1="3/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="954.826" aki="6.32" energy1="0.000" energy2="104731.048" electronconfig1="2s22p5" electronconfig2="2s22p4(3P)3s" term1="2P°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="800" wavelength="955.546" aki="5.05" energy1="404.141" energy2="105056.283" electronconfig1="2s22p5" electronconfig2="2s22p4(3P)3s" term1="2P°" term2="2P" J1="1/2" J2="1/2" /> + <spectrum intensity="500" wavelength="958.525" aki="1.25" energy1="404.141" energy2="104731.048" electronconfig1="2s22p5" electronconfig2="2s22p4(3P)3s" term1="2P°" term2="2P" J1="1/2" J2="3/2" /> + <spectrum intensity="130" wavelength="6239.651" aki="0.25" energy1="102405.714" energy2="118427.814" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="4P" term2="4S°" J1="5/2" J2="3/2" /> + <spectrum intensity="100" wavelength="6348.508" aki="0.18" energy1="102680.439" energy2="118427.814" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="4P" term2="4S°" J1="3/2" J2="3/2" /> + <spectrum intensity="500" wavelength="6856.030" aki="0.494" energy1="102405.714" energy2="116987.391" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="4P" term2="4D°" J1="5/2" J2="7/2" /> + <spectrum intensity="150" wavelength="6902.475" aki="0.32" energy1="102680.439" energy2="117164.002" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="4P" term2="4D°" J1="3/2" J2="5/2" /> + <spectrum intensity="500" wavelength="7037.469" aki="0.30" energy1="104731.048" energy2="118936.791" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="2P" term2="2P°" J1="3/2" J2="3/2" /> + <spectrum intensity="300" wavelength="7127.890" aki="0.38" energy1="105056.283" energy2="119081.814" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="2P" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="150" wavelength="7202.360" aki="0.072" energy1="105056.283" energy2="118936.791" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="2P" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="150" wavelength="7311.019" aki="0.39" energy1="104731.048" energy2="118405.256" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="2P" term2="2S°" J1="3/2" J2="1/2" /> + <spectrum intensity="100" wavelength="7398.688" aki="0.285" energy1="102405.714" energy2="115917.904" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="4P" term2="4P°" J1="5/2" J2="5/2" /> + <spectrum intensity="200" wavelength="7754.696" aki="0.382" energy1="104731.048" energy2="117622.917" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="2P" term2="2D°" J1="3/2" J2="5/2" /> + <spectrum intensity="150" wavelength="7800.212" aki="0.21" energy1="105056.283" energy2="117872.917" electronconfig1="2s22p4(3P)3s" electronconfig2="2s22p4(3P)3p" term1="2P" term2="2D°" J1="1/2" J2="3/2" /> + </spectra> + <date scientist="H. F. Moissan">1886</date> + <biologicalmeaning>4</biologicalmeaning> + <group>7</group> + <electronaffinity>-328</electronaffinity> + <electronegativity>3.98</electronegativity> + <meltingpoint>53.55</meltingpoint> + <boilingpoint>85.0</boilingpoint> + <density>1.58</density> + <ionisationenergy> + <energy>17.422 </energy> + <energy>34.969</energy> + </ionisationenergy> + <radius> + <covalent>70.9</covalent> + <atomic>50</atomic> + <vdw>147</vdw> + <bondxx>141.8</bondxx> + <ionic charge="-1">131</ionic> + </radius> + <abundance>544</abundance> + <orbits>1s2 2s2 2p5</orbits> + <oxydation>-1</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="97.0" betaplusdecay="0.64" betaminuspercentage="" betaminusdecay="" ecpercentage="3.0" ecdecay="" spin="1+" magmoment="" halflife="6582" halflifeformat="seconds" weight="18.000937" neutron="9" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="+2.628866" halflife="" halflifeformat="seconds" weight="18.998404" neutron="10" percentage="100" /> + </isotopes> + <family>Halogene</family> + </element> + <element> + <number>10</number> + <name origin="Greek 'neo'. meaning 'new'">Neon</name> + <symbol>Ne</symbol> + <period>2</period> + <mass>20.1797</mass> + <block>p</block> + <acidicbehaviour>1</acidicbehaviour> + <spectra> + <spectrum intensity="170" wavelength="615.6283" aki="0.380" energy1="0.00" energy2="162435.6780" electronconfig1="2p6" electronconfig2="2p5(2P°1/2)3d" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="170" wavelength="618.6716" aki="0.929" energy1="0.00" energy2="161636.6175" electronconfig1="2p6" electronconfig2="2p5(2P°3/2)3d" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="130" wavelength="619.1023" aki="0.330" energy1="0.00" energy2="161524.1739" electronconfig1="2p6" electronconfig2="2p5(2P°3/2)3d" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="200" wavelength="626.8232" aki="0.741" energy1="0.00" energy2="159534.6196" electronconfig1="2p6" electronconfig2="2p5(2P°1/2)4s" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="200" wavelength="629.7388" aki="0.480" energy1="0.00" energy2="158795.9924" electronconfig1="2p6" electronconfig2="2p5(2P°3/2)4s" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="735.8962" aki="3.16" energy1="0.00" energy2="135888.7173" electronconfig1="2p6" electronconfig2="2p5(2P°1/2)3s" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="400" wavelength="743.7195" aki="0.486" energy1="0.00" energy2="134459.2871" electronconfig1="2p6" electronconfig2="2p5(2P°3/2)3s" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="100" wavelength="3520.4711" aki="0.093" energy1="135888.7173" energy2="164285.8872" electronconfig1="2p5(2P°1/2)3s" electronconfig2="2p5(2P°1/2)4p" term1="2[1/2]°" term2="2[1/2]" J1="1" J2="0" /> + <spectrum intensity="200" wavelength="5400.5618" aki="0.0090" energy1="134459.2871" energy2="152970.7328" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°1/2)3p" term1="2[3/2]°" term2="2[1/2]" J1="1" J2="0" /> + <spectrum intensity="200" wavelength="5852.4879" aki="0.682" energy1="135888.7173" energy2="152970.7328" electronconfig1="2p5(2P°1/2)3s" electronconfig2="2p5(2P°1/2)3p" term1="2[1/2]°" term2="2[1/2]" J1="1" J2="0" /> + <spectrum intensity="100" wavelength="6029.9969" aki="0.0561" energy1="134459.2871" energy2="151038.4524" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°1/2)3p" term1="2[3/2]°" term2="2[1/2]" J1="1" J2="1" /> + <spectrum intensity="100" wavelength="6074.3377" aki="0.603" energy1="134459.2871" energy2="150917.4307" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[3/2]°" term2="2[1/2]" J1="1" J2="0" /> + <spectrum intensity="100" wavelength="6143.0626" aki="0.282" energy1="134041.8400" energy2="150315.8612" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[3/2]°" term2="2[3/2]" J1="2" J2="2" /> + <spectrum intensity="100" wavelength="6163.5939" aki="0.146" energy1="134818.6405" energy2="151038.4524" electronconfig1="2p5(2P°1/2)3s" electronconfig2="2p5(2P°1/2)3p" term1="2[1/2]°" term2="2[1/2]" J1="0" J2="1" /> + <spectrum intensity="100" wavelength="6217.2812" aki="0.0637" energy1="134041.8400" energy2="150121.5922" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[3/2]°" term2="2[3/2]" J1="2" J2="1" /> + <spectrum intensity="100" wavelength="6266.4950" aki="0.249" energy1="134818.6405" energy2="150772.1118" electronconfig1="2p5(2P°1/2)3s" electronconfig2="2p5(2P°1/2)3p" term1="2[1/2]°" term2="2[3/2]" J1="0" J2="1" /> + <spectrum intensity="100" wavelength="6382.9917" aki="0.321" energy1="134459.2871" energy2="150121.5922" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[3/2]°" term2="2[3/2]" J1="1" J2="1" /> + <spectrum intensity="200" wavelength="6402.248" aki="0.514" energy1="134041.8400" energy2="149657.0393" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[3/2]°" term2="2[5/2]" J1="2" J2="3" /> + <spectrum intensity="150" wavelength="6506.5281" aki="0.300" energy1="134459.2871" energy2="149824.2215" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[3/2]°" term2="2[5/2]" J1="1" J2="2" /> + <spectrum intensity="100" wavelength="6598.9529" aki="0.232" energy1="135888.7173" energy2="151038.4524" electronconfig1="2p5(2P°1/2)3s" electronconfig2="2p5(2P°1/2)3p" term1="2[1/2]°" term2="2[1/2]" J1="1" J2="1" /> + <spectrum intensity="1000" wavelength="6929.4673" aki="0.174" energy1="135888.7173" energy2="150315.8612" electronconfig1="2p5(2P°1/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[1/2]°" term2="2[3/2]" J1="1" J2="2" /> + <spectrum intensity="800" wavelength="7032.4131" aki="0.253" energy1="134041.8400" energy2="148257.7898" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[3/2]°" term2="2[1/2]" J1="2" J2="1" /> + <spectrum intensity="800" wavelength="7173.9381" aki="0.0287" energy1="135888.7173" energy2="149824.2215" electronconfig1="2p5(2P°1/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[1/2]°" term2="2[5/2]" J1="1" J2="2" /> + <spectrum intensity="800" wavelength="7245.1666" aki="0.0935" energy1="134459.2871" energy2="148257.7898" electronconfig1="2p5(2P°3/2)3s" electronconfig2="2p5(2P°3/2)3p" term1="2[3/2]°" term2="2[1/2]" J1="1" J2="1" /> + <spectrum intensity="800" wavelength="8377.6080" aki="0.51" energy1="149657.0393" energy2="161590.3412" electronconfig1="2p5(2P°3/2)3p" electronconfig2="2p5(2P°3/2)3d" term1="2[5/2]" term2="2[7/2]°" J1="3" J2="4" /> + <spectrum intensity="600" wavelength="8654.3831" aki="0.445" energy1="150858.5079" energy2="162410.1736" electronconfig1="2p5(2P°1/2)3p" electronconfig2="2p5(2P°1/2)3d" term1="2[3/2]" term2="2[5/2]°" J1="2" J2="3" /> + <spectrum intensity="400" wavelength="8783.7533" aki="0.313" energy1="151038.4524" energy2="162419.9818" electronconfig1="2p5(2P°1/2)3p" electronconfig2="2p5(2P°1/2)3d" term1="2[1/2]" term2="2[3/2]°" J1="1" J2="2" /> + </spectra> + <date scientist="W. Ramsay. M.W. Travers">1898 </date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>29</electronaffinity> + <electronegativity></electronegativity> + <meltingpoint>24.55</meltingpoint> + <boilingpoint>27.10</boilingpoint> + <density>0.8999</density> + <ionisationenergy> + <energy>21.564 </energy> + <energy>40.962</energy> + </ionisationenergy> + <radius> + <covalent>69</covalent> + <atomic>38</atomic> + <vdw>154</vdw> + <bondxx>313</bondxx> + </radius> + <orbits>1s2 2s2 2p6</orbits> + <oxydation>0</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="19.9924" neutron="10" percentage="90.48" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2" magmoment="-0.661796" halflife="" halflifeformat="seconds" weight="20.9938" neutron="11" percentage="0.27" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="21.9914" neutron="12" percentage="9.215" /> + </isotopes> + <family>Noblegas</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>11</number> + <name origin="Arabic 'natrun' for 'soda'">Sodium</name> + <spectra> + <spectrum intensity="5" wavelength="2852.81" aki="0.00554" energy1="0.000" energy2="35042.85" electronconfig1="3s" electronconfig2="5p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="2" wavelength="2853.01" aki="0.00554" energy1="0.000" energy2="35040.38" electronconfig1="3s" electronconfig2="5p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="15" wavelength="3302.37" aki="0.0281" energy1="0.000" energy2="30272.58" electronconfig1="3s" electronconfig2="4p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="8" wavelength="3302.98" aki="0.0281" energy1="0.000" energy2="30266.99" electronconfig1="3s" electronconfig2="4p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="5889.950" aki="0.616" energy1="0.000" energy2="16973.368" electronconfig1="3s" electronconfig2="3p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="500" wavelength="5895.924" aki="0.614" energy1="0.000" energy2="16956.172" electronconfig1="3s" electronconfig2="3p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="60" wavelength="8183.256" aki="0.453" energy1="16956.172" energy2="29172.889" electronconfig1="3p" electronconfig2="3d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="10" wavelength="8194.790" aki="0.090" energy1="16973.368" energy2="29172.889" electronconfig1="3p" electronconfig2="3d" term1="2P°" term2="2D" J1="3/2" J2="3/2" /> + <spectrum intensity="110" wavelength="8194.824" aki="0.54" energy1="16973.368" energy2="29172.839" electronconfig1="3p" electronconfig2="3d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="5" wavelength="11381.45" aki="0.090" energy1="16956.172" energy2="25739.991" electronconfig1="3p" electronconfig2="4s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="12" wavelength="11403.78" aki="0.176" energy1="16973.368" energy2="25739.991" electronconfig1="3p" electronconfig2="4s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + <spectrum intensity="5" wavelength="18465.25" aki="0.140" energy1="29172.839" energy2="34586.92" electronconfig1="3d" electronconfig2="4f" term1="2D" term2="2F°" J1="5/2" J2="7/2" /> + </spectra> + <symbol>Na</symbol> + <period>3</period> + <mass>22.989770</mass> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">1807</date> + <biologicalmeaning>2</biologicalmeaning> + <group>1</group> + <electronaffinity>-53</electronaffinity> + <electronegativity>0.93</electronegativity> + <meltingpoint>371.0</meltingpoint> + <boilingpoint>1156</boilingpoint> + <density>0.97</density> + <ionisationenergy> + <energy>5.139 </energy> + </ionisationenergy> + <radius> + <covalent>153.7</covalent> + <atomic>180</atomic> + <vdw>227</vdw> + <ionic charge="+1">102</ionic> + <bondxx>371.7</bondxx> + </radius> + <abundance>22700</abundance> + <orbits>1s2 2s2 2p6 3s1</orbits> + <oxydation>+1</oxydation> + <family>Alkali_Earth</family> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="100.0" betaplusdecay="2.842" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="" spin="3+" magmoment="+1.746" halflife="2.6" halflifeformat="years" weight="21.99440" neutron="11" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="-2.217520" halflife="" halflifeformat="seconds" weight="22.98977" neutron="12" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="5.514" ecpercentage="" ecdecay="" spin="4+" magmoment="+1.6903" halflife="54000" halflifeformat="seconds" weight="23.99097" neutron="13" percentage="" /> + </isotopes> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>12</number> + <name origin="Named after the city of Magnesia">Magnesium</name> + <symbol>Mg</symbol> + <period>3</period> + <mass>24.3050</mass> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="H. B. Davy">1808</date> + <biologicalmeaning>1</biologicalmeaning> + <group>2</group> + <spectra> + <spectrum intensity="2" wavelength="2025.824" aki="0.612" energy1="0.000" energy2="49346.729" electronconfig1="3s2" electronconfig2="3s4p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="15" wavelength="2779.820" aki="1.31" energy1="21870.464" energy2="57833.40" electronconfig1="3s3p" electronconfig2="3p2" term1="3P°" term2="3P" J1="1" J2="1" /> + <spectrum intensity="15" wavelength="2779.834" aki="3.92" energy1="21911.178" energy2="57873.94" electronconfig1="3s3p" electronconfig2="3p2" term1="3P°" term2="3P" J1="2" J2="2" /> + <spectrum intensity="1000" wavelength="2852.1251" aki="5.00" energy1="0.000" energy2="35051.264" electronconfig1="3s2" electronconfig2="3s3p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="25" wavelength="3829.355" aki="0.940" energy1="21850.405" energy2="47957.058" electronconfig1="3s3p" electronconfig2="3s3d" term1="3P°" term2="3D" J1="0" J2="1" /> + <spectrum intensity="50" wavelength="3832.300" aki="1.27" energy1="21870.464" energy2="47957.027" electronconfig1="3s3p" electronconfig2="3s3d" term1="3P°" term2="3D" J1="1" J2="2" /> + <spectrum intensity="80" wavelength="3838.292" aki="1.68" energy1="21911.178" energy2="47957.045" electronconfig1="3s3p" electronconfig2="3s3d" term1="3P°" term2="3D" J1="2" J2="3" /> + <spectrum intensity="12" wavelength="5167.322" aki="0.116" energy1="21850.405" energy2="41197.403" electronconfig1="3s3p" electronconfig2="3s4s" term1="3P°" term2="3S" J1="0" J2="1" /> + <spectrum intensity="40" wavelength="5172.684" aki="0.346" energy1="21870.464" energy2="41197.403" electronconfig1="3s3p" electronconfig2="3s4s" term1="3P°" term2="3S" J1="1" J2="1" /> + <spectrum intensity="70" wavelength="5183.604" aki="0.575" energy1="21911.178" energy2="41197.403" electronconfig1="3s3p" electronconfig2="3s4s" term1="3P°" term2="3S" J1="2" J2="1" /> + <spectrum intensity="8" wavelength="11828.17" aki="0.26" energy1="35051.264" energy2="43503.333" electronconfig1="3s3p" electronconfig2="3s4s" term1="1P°" term2="1S" J1="1" J2="0" /> + <spectrum intensity="6" wavelength="15025.00" aki="0.139" energy1="41197.403" energy2="47851.162" electronconfig1="3s4s" electronconfig2="3s4p" term1="3S" term2="3P°" J1="1" J2="2" /> + </spectra> + <electronaffinity>19</electronaffinity> + <electronegativity>1.31</electronegativity> + <meltingpoint>922</meltingpoint> + <boilingpoint>1380</boilingpoint> + <density>1.74</density> + <ionisationenergy> + <energy>7.646</energy> + <energy>15.0</energy> + <energy>80.1</energy> + </ionisationenergy> + <radius> + <covalent>130</covalent> + <atomic>150</atomic> + <vdw>173</vdw> + <bondxx>319.7</bondxx> + <ionic charge="+2">72</ionic> + </radius> + <abundance>27640</abundance> + <orbits>1s2 2s2 2p6 3s2</orbits> + <oxydation>+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="23.985" neutron="12" percentage="78.99" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-0.85545" halflife="" halflifeformat="seconds" weight="24.986" neutron="13" percentage="10" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="25.983" neutron="14" percentage="11.01" /> + </isotopes> + <family>Alkaline_Earth</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>13</number> + <name origin="Latin 'alumen'">Aluminum</name> + <symbol>Al</symbol> + <period>3</period> + <mass>26.981538</mass> + <block>p</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="H. Ch. Oersted">1825</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <spectra> + <spectrum intensity="40" wavelength="2269.096" aki="0.691" energy1="112.061" energy2="44168.847" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)5d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="50" wavelength="2367.052" aki="0.628" energy1="0.000" energy2="42233.742" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)4d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="90" wavelength="2373.124" aki="0.748" energy1="112.061" energy2="42237.783" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)4d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="50" wavelength="2575.094" aki="0.226" energy1="112.061" energy2="38933.968" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)4d" term1="2P°" term2="y2D" J1="3/2" J2="5/2" /> + <spectrum intensity="500" wavelength="3082.153" aki="0.622" energy1="0.000" energy2="32435.453" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)3d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="800" wavelength="3092.710" aki="0.738" energy1="112.061" energy2="32436.796" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)3d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="200" wavelength="3092.839" aki="0.123" energy1="112.061" energy2="32435.453" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)3d" term1="2P°" term2="2D" J1="3/2" J2="3/2" /> + <spectrum intensity="500" wavelength="3944.006" aki="0.498" energy1="0.000" energy2="25347.756" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)4s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="3961.520" aki="0.982" energy1="112.061" energy2="25347.756" electronconfig1="3s2(1S)3p" electronconfig2="3s2(1S)4s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + </spectra> + <electronaffinity>-43</electronaffinity> + <electronegativity>1.61</electronegativity> + <meltingpoint>933.5</meltingpoint> + <boilingpoint>2740</boilingpoint> + <density>2.70</density> + <ionisationenergy> + <energy>5.986</energy> + <energy>18.8</energy> + <energy>28.4</energy> + </ionisationenergy> + <radius> + <covalent>118</covalent> + <atomic>125</atomic> + <vdw></vdw> + <ionic charge="+3">53</ionic> + <bondxx>286.3</bondxx> + </radius> + <abundance>83000</abundance> + <orbits>1s2 2s2 2p6 3s2 3p1</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="82" betaplusdecay="4.003" betaminuspercentage="" betaminusdecay="" ecpercentage="18" ecdecay="" spin="5+" magmoment="" halflife="740000" halflifeformat="years" weight="25.986892" neutron="13" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+3.641504" halflife="" halflifeformat="seconds" weight="26.981538" neutron="14" percentage="100" /> + </isotopes> + <family>Other_Metal</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>14</number> + <name origin="Latin 'silex'">Silicon</name> + <symbol>Si</symbol> + <period>3</period> + <mass>28.0855</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <date scientist="J. J. Berzelius">1823</date> + <biologicalmeaning>4</biologicalmeaning> + <group>4</group> + <spectra> + <spectrum intensity="400" wavelength="1850.6719" aki="3.14" energy1="223.157" energy2="54257.574" electronconfig1="3s23p2" electronconfig2="3s23p3d" term1="3P" term2="3D°" J1="2" J2="3" /> + <spectrum intensity="400" wavelength="1977.5978" aki="0.279" energy1="0.000" energy2="50566.414" electronconfig1="3s23p2" electronconfig2="3s23p3d" term1="3P" term2="3P°" J1="0" J2="1" /> + <spectrum intensity="400" wavelength="1979.2056" aki="0.870" energy1="77.112" energy2="50602.435" electronconfig1="3s23p2" electronconfig2="3s23p3d" term1="3P" term2="3P°" J1="1" J2="0" /> + <spectrum intensity="300" wavelength="1980.6185" aki="0.207" energy1="77.112" energy2="50566.414" electronconfig1="3s23p2" electronconfig2="3s23p3d" term1="3P" term2="3P°" J1="1" J2="1" /> + <spectrum intensity="300" wavelength="1983.2330" aki="0.218" energy1="77.112" energy2="50499.843" electronconfig1="3s23p2" electronconfig2="3s23p3d" term1="3P" term2="3P°" J1="1" J2="2" /> + <spectrum intensity="500" wavelength="1986.3640" aki="0.365" energy1="223.157" energy2="50566.414" electronconfig1="3s23p2" electronconfig2="3s23p3d" term1="3P" term2="3P°" J1="2" J2="1" /> + <spectrum intensity="1000" wavelength="1988.9937" aki="0.657" energy1="223.157" energy2="50499.843" electronconfig1="3s23p2" electronconfig2="3s23p3d" term1="3P" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="400" wavelength="2207.978" aki="0.262" energy1="0.000" energy2="45276.187" electronconfig1="3s23p2" electronconfig2="3s3p3" term1="3P" term2="3D°" J1="0" J2="1" /> + <spectrum intensity="500" wavelength="2210.894" aki="0.345" energy1="77.112" energy2="45293.623" electronconfig1="3s23p2" electronconfig2="3s3p3" term1="3P" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="300" wavelength="2211.744" aki="0.181" energy1="77.112" energy2="45276.187" electronconfig1="3s23p2" electronconfig2="3s3p3" term1="3P" term2="3D°" J1="1" J2="1" /> + <spectrum intensity="500" wavelength="2216.669" aki="0.454" energy1="223.157" energy2="45321.848" electronconfig1="3s23p2" electronconfig2="3s3p3" term1="3P" term2="3D°" J1="2" J2="3" /> + <spectrum intensity="400" wavelength="2218.057" aki="0.109" energy1="223.157" energy2="45293.623" electronconfig1="3s23p2" electronconfig2="3s3p3" term1="3P" term2="3D°" J1="2" J2="2" /> + <spectrum intensity="400" wavelength="2506.897" aki="0.547" energy1="77.112" energy2="39955.051" electronconfig1="3s23p2" electronconfig2="3s23p4s" term1="3P" term2="3P°" J1="1" J2="2" /> + <spectrum intensity="400" wavelength="2514.316" aki="0.740" energy1="0.000" energy2="39760.285" electronconfig1="3s23p2" electronconfig2="3s23p4s" term1="3P" term2="3P°" J1="0" J2="1" /> + <spectrum intensity="500" wavelength="2516.112" aki="1.68" energy1="223.157" energy2="39955.051" electronconfig1="3s23p2" electronconfig2="3s23p4s" term1="3P" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="400" wavelength="2519.202" aki="0.549" energy1="77.112" energy2="39760.285" electronconfig1="3s23p2" electronconfig2="3s23p4s" term1="3P" term2="3P°" J1="1" J2="1" /> + <spectrum intensity="400" wavelength="2524.108" aki="2.22" energy1="77.112" energy2="39683.158" electronconfig1="3s23p2" electronconfig2="3s23p4s" term1="3P" term2="3P°" J1="1" J2="0" /> + <spectrum intensity="400" wavelength="2528.509" aki="0.904" energy1="223.157" energy2="39760.285" electronconfig1="3s23p2" electronconfig2="3s23p4s" term1="3P" term2="3P°" J1="2" J2="1" /> + <spectrum intensity="1000" wavelength="2881.5771" aki="1.89" energy1="6298.847" energy2="40991.888" electronconfig1="3s23p2" electronconfig2="3s23p4s" term1="1D" term2="1P°" J1="2" J2="1" /> + <spectrum intensity="50" wavelength="5948.545" aki="0.022" energy1="40991.888" energy2="57798.080" electronconfig1="3s23p4s" electronconfig2="3s23p5p" term1="1P°" term2="1D" J1="1" J2="2" /> + <spectrum intensity="80" wavelength="7405.7740" aki="0.037" energy1="45276.187" energy2="58775.442" electronconfig1="3s3p3" electronconfig2="3s23p(2P°1/2)4f" term1="3D°" term2="2[5/2]" J1="1" J2="2" /> + </spectra> + <electronaffinity>-134</electronaffinity> + <electronegativity>1.91</electronegativity> + <meltingpoint>1683</meltingpoint> + <boilingpoint>2630</boilingpoint> + <density>2.33</density> + <ionisationenergy> + <energy>8.151</energy> + <energy>16.3</energy> + <energy>33.4</energy> + </ionisationenergy> + <radius> + <covalent>111</covalent> + <atomic>110</atomic> + <vdw>210</vdw> + <bondxx>235.2</bondxx> + <ionic charge="+4">40</ionic> + </radius> + <abundance>272200</abundance> + <orbits>1s2 2s2 2p6 3s2 3p2</orbits> + <oxydation>+4.(-4.+2)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="27.977" neutron="14" percentage="92.28" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-0.55529" halflife="" halflifeformat="seconds" weight="28.976" neutron="15" percentage="4.67" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="29.974" neutron="16" percentage="3.05" /> + </isotopes> + <family>Metalloids</family> + <crystalstructure>d</crystalstructure> + </element> + <element> + <number>15</number> + <name origin="Greek 'phosphoros' for 'carries light'">Phosphorus</name> + <symbol>P</symbol> + <period>3</period> + <mass>30.973761</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <date scientist="H. Brandt">1669</date> + <biologicalmeaning>1</biologicalmeaning> + <group>5</group> + <spectra> + <spectrum intensity="800" wavelength="1674.591" aki="0.773" energy1="0.00" energy2="59715.921" electronconfig1="3s23p3" electronconfig2="3s3p4" term1="4S°" term2="4P" J1="3/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="1679.695" aki="0.845" energy1="0.00" energy2="59534.549" electronconfig1="3s23p3" electronconfig2="3s3p4" term1="4S°" term2="4P" J1="3/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="1774.951" aki="2.38" energy1="0.00" energy2="56339.656" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="4S°" term2="4P" J1="3/2" J2="5/2" /> + <spectrum intensity="800" wavelength="1782.838" aki="2.38" energy1="0.00" energy2="56090.626" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="4S°" term2="4P" J1="3/2" J2="3/2" /> + <spectrum intensity="700" wavelength="1787.656" aki="2.52" energy1="0.00" energy2="55939.421" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="4S°" term2="4P" J1="3/2" J2="1/2" /> + <spectrum intensity="200" wavelength="2135.465" aki="0.211" energy1="11361.02" energy2="58174.366" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="2D°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="400" wavelength="2136.182" aki="2.83" energy1="11376.63" energy2="58174.366" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="2D°" term2="2P" J1="5/2" J2="3/2" /> + <spectrum intensity="400" wavelength="2149.145" aki="3.18" energy1="11361.02" energy2="57876.574" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="2D°" term2="2P" J1="3/2" J2="1/2" /> + <spectrum intensity="150" wavelength="2152.940" aki="0.485" energy1="18722.71" energy2="65156.242" electronconfig1="3s23p3" electronconfig2="3s23p2(1D)4s" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="300" wavelength="2154.080" aki="0.58" energy1="18748.01" energy2="65157.126" electronconfig1="3s23p3" electronconfig2="3s23p2(1D)4s" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="400" wavelength="2533.987" aki="0.200" energy1="18722.71" energy2="58174.366" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="2P°" term2="2P" J1="1/2" J2="3/2" /> + <spectrum intensity="500" wavelength="2535.606" aki="0.95" energy1="18748.01" energy2="58174.366" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="2P°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="400" wavelength="2553.253" aki="0.71" energy1="18722.71" energy2="57876.574" electronconfig1="3s23p3" electronconfig2="3s23p2(3P)4s" term1="2P°" term2="2P" J1="1/2" J2="1/2" /> + <spectrum intensity="90" wavelength="9525.73" aki="0.18" energy1="56339.656" energy2="66834.648" electronconfig1="3s23p2(3P)4s" electronconfig2="3s23p2(3P)4p" term1="4P" term2="4S°" J1="5/2" J2="3/2" /> + <spectrum intensity="80" wavelength="9750.77" aki="0.24" energy1="56090.626" energy2="66343.438" electronconfig1="3s23p2(3P)4s" electronconfig2="3s23p2(3P)4p" term1="4P" term2="4P°" J1="3/2" J2="1/2" /> + <spectrum intensity="90" wavelength="9796.85" aki="0.21" energy1="56339.656" energy2="66544.243" electronconfig1="3s23p2(3P)4s" electronconfig2="3s23p2(3P)4p" term1="4P" term2="4P°" J1="5/2" J2="5/2" /> + </spectra> + <electronaffinity>-72</electronaffinity> + <electronegativity>2.19</electronegativity> + <meltingpoint>317.3</meltingpoint> + <boilingpoint>553</boilingpoint> + <density>1.82</density> + <ionisationenergy> + <energy>10.486</energy> + <energy>19.8</energy> + <energy>30.2</energy> + </ionisationenergy> + <radius> + <covalent>106</covalent> + <atomic>100</atomic> + <vdw>180</vdw> + <ionic charge="+5">35</ionic> + <ionic charge="+3">44</ionic> + <bondxx>221</bondxx> + </radius> + <abundance>1120</abundance> + <orbits>1s2 2s2 2p6 3s2 3p3</orbits> + <oxydation>-3.(+1.+3).+5</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="+1.13160" halflife="" halflifeformat="seconds" weight="30.97376" neutron="16" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.710" ecpercentage="" ecdecay="" spin="1+" magmoment="-0.2524" halflife="1231372" halflifeformat="seconds" weight="31.97391" neutron="17" percentage="" /> + </isotopes> + <family>Non-Metal</family> + <crystalstructure>sc</crystalstructure> + </element> + <element> + <number>16</number> + <name origin="In sankskrit 'sweb' means 'to sleep'">Sulfur</name> + <symbol>S</symbol> + <period>3</period> + <mass>32.065</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>1</biologicalmeaning> + <spectra> + <spectrum intensity="1000" wavelength="1425.030" aki="2.92" energy1="0.000" energy2="70173.968" electronconfig1="3s23p4" electronconfig2="3s23p3(4S°)3d" term1="3P" term2="3D°" J1="2" J2="3" /> + <spectrum intensity="600" wavelength="1433.280" aki="2.16" energy1="396.055" energy2="70166.195" electronconfig1="3s23p4" electronconfig2="3s23p3(4S°)3d" term1="3P" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="200" wavelength="1433.310" aki="1.20" energy1="396.055" energy2="70164.650" electronconfig1="3s23p4" electronconfig2="3s23p3(4S°)3d" term1="3P" term2="3D°" J1="1" J2="1" /> + <spectrum intensity="1000" wavelength="1473.995" aki="1.82" energy1="0.000" energy2="67842.867" electronconfig1="3s23p4" electronconfig2="3s23p3(2D°)4s" term1="3P" term2="3D°" J1="2" J2="3" /> + <spectrum intensity="900" wavelength="1666.688" aki="6.3" energy1="9238.609" energy2="69237.886" electronconfig1="3s23p4" electronconfig2="3s23p3(2D°)4s" term1="1D" term2="1D°" J1="2" J2="2" /> + <spectrum intensity="800" wavelength="1687.530" aki="0.94" energy1="22179.954" energy2="81438.30" electronconfig1="3s23p4" electronconfig2="3s23p3(2D°)3d" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="1807.311" aki="3.08" energy1="0.000" energy2="55330.811" electronconfig1="3s23p4" electronconfig2="3s23p3(4S°)4s" term1="3P" term2="3S°" J1="2" J2="1" /> + <spectrum intensity="900" wavelength="1820.343" aki="1.70" energy1="396.055" energy2="55330.811" electronconfig1="3s23p4" electronconfig2="3s23p3(4S°)4s" term1="3P" term2="3S°" J1="1" J2="1" /> + <spectrum intensity="800" wavelength="1826.245" aki="0.549" energy1="573.640" energy2="55330.811" electronconfig1="3s23p4" electronconfig2="3s23p3(4S°)4s" term1="3P" term2="3S°" J1="0" J2="1" /> + <spectrum intensity="150" wavelength="9212.865" aki="0.30" energy1="52623.640" energy2="63475.051" electronconfig1="3s23p3(4S°)4s" electronconfig2="3s23p3(4S°)4p" term1="5S°" term2="5P" J1="2" J2="3" /> + <spectrum intensity="100" wavelength="9228.092" aki="0.28" energy1="52623.640" energy2="63457.142" electronconfig1="3s23p3(4S°)4s" electronconfig2="3s23p3(4S°)4p" term1="5S°" term2="5P" J1="2" J2="2" /> + <spectrum intensity="80" wavelength="9237.538" aki="0.28" energy1="52623.640" energy2="63446.065" electronconfig1="3s23p3(4S°)4s" electronconfig2="3s23p3(4S°)4p" term1="5S°" term2="5P" J1="2" J2="1" /> + <spectrum intensity="200" wavelength="10455.451" aki="0.22" energy1="55330.811" energy2="64892.582" electronconfig1="3s23p3(4S°)4s" electronconfig2="3s23p3(4S°)4p" term1="3S°" term2="3P" J1="1" J2="2" /> + <spectrum intensity="30" wavelength="10456.757" aki="0.22" energy1="55330.811" energy2="64891.386" electronconfig1="3s23p3(4S°)4s" electronconfig2="3s23p3(4S°)4p" term1="3S°" term2="3P" J1="1" J2="0" /> + <spectrum intensity="130" wavelength="10459.406" aki="0.22" energy1="55330.811" energy2="64888.964" electronconfig1="3s23p3(4S°)4s" electronconfig2="3s23p3(4S°)4p" term1="3S°" term2="3P" J1="1" J2="1" /> + </spectra> + <group>6</group> + <electronaffinity>-200</electronaffinity> + <electronegativity>2.58</electronegativity> + <meltingpoint>392.2</meltingpoint> + <boilingpoint>717.82</boilingpoint> + <density>2.06</density> + <ionisationenergy> + <energy>10.360</energy> + <energy>23.3</energy> + <energy>34.8</energy> + </ionisationenergy> + <radius> + <covalent>102</covalent> + <atomic>100</atomic> + <vdw>180</vdw> + <ionic charge="-2">184</ionic> + <bondxx>205</bondxx> + </radius> + <abundance>340</abundance> + <orbits>1s2 2s2 2p6 3s2 3p4</orbits> + <oxydation>-2.+2.+4.+6</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="31.972" neutron="16" percentage="95.1" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.643821" halflife="" halflifeformat="seconds" weight="32.971:" neutron="17" percentage="0.74" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="33.968" neutron="18" percentage="4.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.1674" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+1" halflife="7525440" halflifeformat="seconds" weight="34.96903" neutron="19" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="35.967" neutron="20" percentage="0.016" /> + </isotopes> + <family>Non-Metal</family> + <crystalstructure>or</crystalstructure> + </element> + <element> + <number>17</number> + <name origin="Greek 'chloros' for 'yellow-green'">Chlorine</name> + <symbol>Cl</symbol> + <period>3</period> + <spectra> + <spectrum intensity="300" wavelength="1335.726" aki="2.24" energy1="0.00" energy2="74865.667" electronconfig1="3s23p5" electronconfig2="3s23p4(3P)4s" term1="2P°" term2="2P" J1="3/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="1347.240" aki="5.62" energy1="0.00" energy2="74225.846" electronconfig1="3s23p5" electronconfig2="3s23p4(3P)4s" term1="2P°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="500" wavelength="1351.657" aki="4.24" energy1="882.35" energy2="74865.667" electronconfig1="3s23p5" electronconfig2="3s23p4(3P)4s" term1="2P°" term2="2P" J1="1/2" J2="1/2" /> + <spectrum intensity="500" wavelength="1363.447" aki="0.99" energy1="882.35" energy2="74225.846" electronconfig1="3s23p5" electronconfig2="3s23p4(3P)4s" term1="2P°" term2="2P" J1="1/2" J2="3/2" /> + <spectrum intensity="500" wavelength="1379.528" aki="0.096" energy1="0.00" energy2="72488.568" electronconfig1="3s23p5" electronconfig2="3s23p4(3P)4s" term1="2P°" term2="4P" J1="3/2" J2="3/2" /> + <spectrum intensity="500" wavelength="1389.693" aki="0.0030" energy1="0.00" energy2="71958.363" electronconfig1="3s23p5" electronconfig2="3s23p4(3P)4s" term1="2P°" term2="4P" J1="3/2" J2="5/2" /> + <spectrum intensity="500" wavelength="1389.957" aki="0.023" energy1="882.35" energy2="72827.038" electronconfig1="3s23p5" electronconfig2="3s23p4(3P)4s" term1="2P°" term2="4P" J1="1/2" J2="1/2" /> + <spectrum intensity="500" wavelength="1396.527" aki="0.011" energy1="882.35" energy2="72488.568" electronconfig1="3s23p5" electronconfig2="3s23p4(3P)4s" term1="2P°" term2="4P" J1="1/2" J2="3/2" /> + <spectrum intensity="60" wavelength="7547.072" aki="0.12" energy1="72488.568" energy2="85735.091" electronconfig1="3s23p4(3P)4s" electronconfig2="3s23p4(3P)4p" term1="4P" term2="4S°" J1="3/2" J2="3/2" /> + <spectrum intensity="50" wavelength="7744.970" aki="0.063" energy1="72827.038" energy2="1/2" electronconfig1="3s23p4(3P)4s" electronconfig2="" term1="4P" term2="85735.091" J1="" J2="" /> + </spectra> + <mass>35.453</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <date scientist="C. W. Scheele">1774</date> + <biologicalmeaning>2</biologicalmeaning> + <group>7</group> + <electronaffinity>-349</electronaffinity> + <electronegativity>3.16</electronegativity> + <meltingpoint>172.17</meltingpoint> + <boilingpoint>239.18</boilingpoint> + <density>2.95</density> + <ionisationenergy> + <energy>12.967</energy> + <energy>23.8</energy> + <energy>39.6</energy> + </ionisationenergy> + <radius> + <covalent>99.4</covalent> + <atomic>100</atomic> + <vdw>175</vdw> + <bondxx>189.1</bondxx> + <ionic charge="-1">181</ionic> + </radius> + <abundance>126</abundance> + <orbits>1s2 2s2 2p6 3s2 3p5</orbits> + <oxydation>-1.(+1.+3.+5.+7)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.82187" halflife="" halflifeformat="seconds" weight="34.968853" neutron="18" percentage="75.77" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.68412" halflife="" halflifeformat="seconds" weight="36.966" neutron="20" percentage="24.23" /> + </isotopes> + <family>Halogene</family> + <crystalstructure>tet</crystalstructure> + </element> + <element> + <number>18</number> + <name origin="Greek 'aergon' for 'inactive'">Argon</name> + <symbol>Ar</symbol> + <period>3</period> + <mass>39.948</mass> + <block>p</block> + <spectra> + <spectrum intensity="180" wavelength="866.79997" aki="3.14" energy1="0.000" energy2="115366.871" electronconfig1="3p6" electronconfig2="3p5(2P°1/2)3d" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="150" wavelength="869.75411" aki="0.35" energy1="0.000" energy2="114975.024" electronconfig1="3p6" electronconfig2="3p5(2P°1/2)5s" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="180" wavelength="876.05767" aki="2.69" energy1="0.000" energy2="114147.737" electronconfig1="3p6" electronconfig2="3p5(2P°1/2)3d" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="180" wavelength="879.94656" aki="0.77" energy1="0.000" energy2="113643.265" electronconfig1="3p6" electronconfig2="3p5(2P°1/2)5s" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="150" wavelength="894.31013" aki="0.000" energy1="3p6" energy2="3p5(2P°3/2)3d" electronconfig1="1S" electronconfig2="2[1/2]°" term1="0" term2="" J1="111818.033" J2="1" /> + <spectrum intensity="1000" wavelength="1048.21987" aki="5.32" energy1="0.000" energy2="95399.8329" electronconfig1="3p6" electronconfig2="3p5(2P°1/2)4s" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="500" wavelength="1066.65980" aki="1.32" energy1="0.000" energy2="93750.6031" electronconfig1="3p6" electronconfig2="3p5(2P°3/2)4s" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="300" wavelength="6965.431" aki="0.067" energy1="93143.7653" energy2="107496.4219" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°1/2)4p" term1="2[3/2]°" term2="2[1/2]" J1="2" J2="1" /> + <spectrum intensity="300" wavelength="7067.218" aki="0.0395" energy1="93143.7653" energy2="107289.7054" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°1/2)4p" term1="2[3/2]°" term2="2[3/2]" J1="2" J2="2" /> + <spectrum intensity="600" wavelength="7503.869" aki="0.472" energy1="95399.8329" energy2="108722.6247" electronconfig1="3p5(2P°1/2)4s" electronconfig2="3p5(2P°1/2)4p" term1="2[1/2]°" term2="2[1/2]" J1="1" J2="0" /> + <spectrum intensity="700" wavelength="7635.106" aki="0.274" energy1="93143.7653" energy2="106237.5571" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°3/2)4p" term1="2[3/2]°" term2="2[3/2]" J1="2" J2="2" /> + <spectrum intensity="600" wavelength="7948.176" aki="0.196" energy1="94553.6705" energy2="107131.7139" electronconfig1="3p5(2P°1/2)4s" electronconfig2="3p5(2P°1/2)4p" term1="2[1/2]°" term2="2[3/2]" J1="0" J2="1" /> + <spectrum intensity="600" wavelength="8006.157" aki="0.0490" energy1="93750.6031" energy2="106237.5571" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°3/2)4p" term1="2[3/2]°" term2="2[3/2]" J1="1" J2="2" /> + <spectrum intensity="700" wavelength="8014.786" aki="0.0928" energy1="93143.7653" energy2="105617.2753" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°3/2)4p" term1="2[3/2]°" term2="2[5/2]" J1="2" J2="2" /> + <spectrum intensity="600" wavelength="8103.693" aki="0.25" energy1="93750.6031" energy2="106087.2651" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°3/2)4p" term1="2[3/2]°" term2="2[3/2]" J1="1" J2="1" /> + <spectrum intensity="1000" wavelength="8115.311" aki="0.331" energy1="93143.7653" energy2="105462.7649" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°3/2)4p" term1="2[3/2]°" term2="2[5/2]" J1="2" J2="3" /> + <spectrum intensity="1000" wavelength="9122.967" aki="0.189" energy1="93143.7653" energy2="104102.1043" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°3/2)4p" term1="2[3/2]°" term2="2[1/2]" J1="2" J2="1" /> + <spectrum intensity="700" wavelength="9657.786" aki="0.0543" energy1="93750.6031" energy2="104102.1043" electronconfig1="3p5(2P°3/2)4s" electronconfig2="3p5(2P°3/2)4p" term1="2[3/2]°" term2="2[1/2]" J1="1" J2="1" /> + </spectra> + <acidicbehaviour>1</acidicbehaviour> + <date scientist="W. Ramsay. J. Rayleigh">1894</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>29</electronaffinity> + <electronegativity></electronegativity> + <meltingpoint>83.95</meltingpoint> + <boilingpoint>87.45</boilingpoint> + <density>1.66</density> + <ionisationenergy> + <energy>15.759</energy> + <energy>27.6</energy> + <energy>40.7</energy> + </ionisationenergy> + <radius> + <covalent>97</covalent> + <atomic>71</atomic> + <vdw>188</vdw> + <bondxx>372</bondxx> + </radius> + <abundance></abundance> + <orbits>1s2 2s2 2p6 3s2 3p6</orbits> + <oxydation>0</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="35.968" neutron="18" percentage="0.337" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="37.963" neutron="20" percentage="0.063" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="39.962" neutron="22" percentage="99.600" /> + </isotopes> + <family>Noblegas</family> + <crystalstructure>tet</crystalstructure> + </element> + <element> + <number>19</number> + <name origin="Arabic 'al qaliy' for potash">Potassium</name> + <symbol>K</symbol> + <period>4</period> + <spectra> + <spectrum intensity="700" wavelength="4044.14" aki="0.0116" energy1="0.000" energy2="24720.139" electronconfig1="4s" electronconfig2="5p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="700" wavelength="4047.21" aki="0.0107" energy1="0.000" energy2="24701.382" electronconfig1="4s" electronconfig2="5p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="7664.8991" aki="0.379" energy1="0.000" energy2="13042.876" electronconfig1="4s" electronconfig2="4p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="7698.9645" aki="0.374" energy1="0.000" energy2="12985.170" electronconfig1="4s" electronconfig2="4p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="700" wavelength="11690.21" aki="0.220" energy1="12985.170" energy2="21536.988" electronconfig1="4p" electronconfig2="3d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="600" wavelength="11769.62" aki="0.0434" energy1="13042.876" energy2="21536.988" electronconfig1="4p" electronconfig2="3d" term1="2P°" term2="2D" J1="3/2" J2="3/2" /> + <spectrum intensity="700" wavelength="11772.83" aki="0.259" energy1="13042.876" energy2="21534.680" electronconfig1="4p" electronconfig2="3d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + </spectra> + <mass>39.0983</mass> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="H. B. Davy">1807</date> + <biologicalmeaning>1</biologicalmeaning> + <group>1</group> + <electronaffinity>-48</electronaffinity> + <electronegativity>0.82</electronegativity> + <meltingpoint>336.8</meltingpoint> + <boilingpoint>1033</boilingpoint> + <density>0.86</density> + <ionisationenergy> + <energy>4.341 </energy> + </ionisationenergy> + <radius> + <covalent>196</covalent> + <atomic>220</atomic> + <vdw>275</vdw> + </radius> + <orbits>Ar 4s1</orbits> + <oxydation>+1</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.391466" halflife="" halflifeformat="seconds" weight="38.964" neutron="20" percentage="93.2581" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="89.33" betaminusdecay="1.32" ecpercentage="10.67" ecdecay="" spin="4-" magmoment="-1.298099" halflife="1277000000" halflifeformat="years" weight="39.964" neutron="21" percentage="0.0117" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.2148699" halflife="" halflifeformat="seconds" weight="40.962" neutron="22" percentage="6.73" /> + </isotopes> + <family>Alkali_Earth</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>20</number> + <name origin="Latin 'calx' for 'lime'">Calcium</name> + <symbol>Ca</symbol> + <period>4</period> + <mass>40.078</mass> + <spectra> + <spectrum intensity="140" wavelength="2721.645" aki="0.0027" energy1="0.000" energy2="36731.615" electronconfig1="4s2" electronconfig2="4s5p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="4226.727" aki="2.20" energy1="0.000" energy2="23652.304" electronconfig1="4s2" electronconfig2="4s4p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="500" wavelength="4425.441" aki="0.498" energy1="15157.901" energy2="37748.197" electronconfig1="4s4p" electronconfig2="4s4d" term1="3P°" term2="3D" J1="0" J2="1" /> + <spectrum intensity="500" wavelength="4434.960" aki="0.67" energy1="15210.063" energy2="37751.867" electronconfig1="4s4p" electronconfig2="4s4d" term1="3P°" term2="3D" J1="1" J2="2" /> + <spectrum intensity="500" wavelength="4435.688" aki="0.342" energy1="15210.063" energy2="37748.197" electronconfig1="4s4p" electronconfig2="4s4d" term1="3P°" term2="3D" J1="1" J2="1" /> + <spectrum intensity="600" wavelength="4454.781" aki="0.87" energy1="15315.943" energy2="37757.449" electronconfig1="4s4p" electronconfig2="4s4d" term1="3P°" term2="3D" J1="2" J2="3" /> + <spectrum intensity="600" wavelength="4455.887" aki="0.20" energy1="15315.943" energy2="37751.867" electronconfig1="4s4p" electronconfig2="4s4d" term1="3P°" term2="3D" J1="2" J2="2" /> + <spectrum intensity="500" wavelength="5588.757" aki="0.49" energy1="20371.000" energy2="38259.124" electronconfig1="3d4s" electronconfig2="3d4p" term1="3D" term2="3D°" J1="3" J2="3" /> + <spectrum intensity="500" wavelength="6102.722" aki="0.096" energy1="15157.901" energy2="31539.495" electronconfig1="4s4p" electronconfig2="4s5s" term1="3P°" term2="3S" J1="0" J2="1" /> + <spectrum intensity="600" wavelength="6122.219" aki="0.287" energy1="15210.063" energy2="31539.495" electronconfig1="4s4p" electronconfig2="4s5s" term1="3P°" term2="3S" J1="1" J2="1" /> + <spectrum intensity="600" wavelength="6162.172" aki="0.354" energy1="15315.943" energy2="31539.495" electronconfig1="4s4p" electronconfig2="4s5s" term1="3P°" term2="3S" J1="2" J2="1" /> + <spectrum intensity="700" wavelength="6439.073" aki="0.53" energy1="20371.000" energy2="35896.889" electronconfig1="3d4s" electronconfig2="3d4p" term1="3D" term2="3F°" J1="3" J2="4" /> + <spectrum intensity="700" wavelength="6462.566" aki="0.47" energy1="20349.260" energy2="35818.713" electronconfig1="3d4s" electronconfig2="3d4p" term1="3D" term2="3F°" J1="2" J2="3" /> + <spectrum intensity="600" wavelength="6493.780" aki="0.44" energy1="20335.360" energy2="35730.454" electronconfig1="3d4s" electronconfig2="3d4p" term1="3D" term2="3F°" J1="1" J2="2" /> + </spectra> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="H. B. Davy">1808</date> + <biologicalmeaning>1</biologicalmeaning> + <group>2</group> + <electronaffinity>10</electronaffinity> + <electronegativity>1.00</electronegativity> + <meltingpoint>1112</meltingpoint> + <boilingpoint>1757</boilingpoint> + <density>1.54</density> + <ionisationenergy> + <energy>6.113</energy> + <energy>11.9</energy> + </ionisationenergy> + <radius> + <covalent>174</covalent> + <atomic>180</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 4s2</orbits> + <oxydation>+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="39.963" neutron="20" percentage="96.92" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="41.959" neutron="22" percentage="0.64" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="+1.31725" halflife="" halflifeformat="seconds" weight="42.959" neutron="23" percentage="0.13" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0" magmoment="0" halflife="" halflifeformat="seconds" weight="43.955" neutron="24" percentage="2.13" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.257" ecpercentage="" ecdecay="" spin="7/2-" magmoment="" halflife="14152320" halflifeformat="seconds" weight="44.956185" neutron="26" percentage="0.003" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="47.952" neutron="28" percentage="0.18" /> + </isotopes> + <family>Alkaline_Earth</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>21</number> + <name origin="Named because it was found in Scandinavia">Scandium</name> + <symbol>Sc</symbol> + <period>4</period> + <mass>44.955910</mass> + <spectra> + <spectrum intensity="200" wavelength="3269.897" aki="3.13" energy1="0.00" energy2="30573.17" electronconfig1="3d4s2" electronconfig2="3d4s(3D)4p" term1="2D" term2="2P°" J1="3/2" J2="1/2" /> + <spectrum intensity="250" wavelength="3273.628" aki="2.81" energy1="168.34" energy2="30706.66" electronconfig1="3d4s2" electronconfig2="3d4s(3D)4p" term1="2D" term2="2P°" J1="5/2" J2="3/2" /> + <spectrum intensity="900" wavelength="3907.484" aki="1.66" energy1="0.00" energy2="25584.64" electronconfig1="3d4s2" electronconfig2="3d4s(3D)4p" term1="2D" term2="2F°" J1="3/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="3911.812" aki="1.79" energy1="168.34" energy2="25724.68" electronconfig1="3d4s2" electronconfig2="3d4s(3D)4p" term1="2D" term2="2F°" J1="5/2" J2="7/2" /> + <spectrum intensity="200" wavelength="3933.375" aki="0.162" energy1="168.34" energy2="25584.64" electronconfig1="3d4s2" electronconfig2="3d4s(3D)4p" term1="2D" term2="2F°" J1="5/2" J2="5/2" /> + <spectrum intensity="250" wavelength="3996.601" aki="0.165" energy1="0.00" energy2="25014.21" electronconfig1="3d4s2" electronconfig2="3d4s(3D)4p" term1="2D" term2="2D°" J1="3/2" J2="5/2" /> + <spectrum intensity="900" wavelength="4020.387" aki="1.63" energy1="0.00" energy2="24866.17" electronconfig1="3d4s2" electronconfig2="3d4s(3D)4p" term1="2D" term2="2D°" J1="3/2" J2="3/2" /> + <spectrum intensity="900" wavelength="4023.678" aki="1.65" energy1="168.34" energy2="25014.21" electronconfig1="3d4s2" electronconfig2="3d4s(3D)4p" term1="2D" term2="2D°" J1="5/2" J2="5/2" /> + <spectrum intensity="250" wavelength="4054.544" aki="0.441" energy1="0.00" energy2="24656.72" electronconfig1="3d4s2" electronconfig2="3d4s(1D)4p" term1="2D" term2="2P°" J1="3/2" J2="1/2" /> + <spectrum intensity="250" wavelength="4082.387" aki="0.410" energy1="168.34" energy2="24656.88" electronconfig1="3d4s2" electronconfig2="3d4s(1D)4p" term1="2D" term2="2P°" J1="5/2" J2="3/2" /> + </spectra> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="L. Nilson">1879</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <electronaffinity>-18</electronaffinity> + <electronegativity>1.36</electronegativity> + <meltingpoint>1814</meltingpoint> + <boilingpoint>3109</boilingpoint> + <density>2.99</density> + <ionisationenergy> + <energy>6.54 </energy> + </ionisationenergy> + <radius> + <covalent>144</covalent> + <atomic>160.6</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 3d1 4s2</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="+4.756483" halflife="" halflifeformat="seconds" weight="44.95591" neutron="24" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="2.367" ecpercentage="" ecdecay="" spin="4+" magmoment="" halflife="7241184" halflifeformat="seconds" weight="45.95517" neutron="25" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.601" ecpercentage="" ecdecay="" spin="7/2-" magmoment="" halflife="289008" halflifeformat="seconds" weight="46.95241" neutron="26" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="4.0" ecpercentage="" ecdecay="" spin="6+" magmoment="" halflife="157320" halflifeformat="seconds" weight="48.04776" neutron="27" percentage="" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>22</number> + <name origin="The Titans were giants in Greek mythology">Titanium</name> + <symbol>Ti</symbol> + <period>4</period> + <mass>47.867</mass> + <block>d</block> + <spectra> + <spectrum intensity="600" wavelength="3635.462" aki="0.909" energy1="0.000" energy2="27498.983" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(1P°)" term1="a3F" term2="y3G°" J1="2" J2="3" /> + <spectrum intensity="800" wavelength="3642.674" aki="0.895" energy1="170.134" energy2="27614.678" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(1P°)" term1="a3F" term2="y3G°" J1="3" J2="4" /> + <spectrum intensity="900" wavelength="3653.495" aki="0.869" energy1="386.875" energy2="27750.136" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(1P°)" term1="a3F" term2="y3G°" J1="4" J2="5" /> + <spectrum intensity="700" wavelength="3752.858" aki="0.581" energy1="386.875" energy2="27025.658" electronconfig1="3d24s2" electronconfig2="3d2(1D)4s4p(3P°)" term1="a3F" term2="x3F°" J1="4" J2="4" /> + <spectrum intensity="600" wavelength="3948.670" aki="0.560" energy1="0.000" energy2="25317.815" electronconfig1="3d24s2" electronconfig2="3d3(4F)4p" term1="a3F" term2="y3D°" J1="2" J2="1" /> + <spectrum intensity="600" wavelength="3956.334" aki="0.346" energy1="170.134" energy2="25438.906" electronconfig1="3d24s2" electronconfig2="3d3(4F)4p" term1="a3F" term2="y3D°" J1="3" J2="2" /> + <spectrum intensity="700" wavelength="3958.201" aki="0.488" energy1="386.875" energy2="25643.699" electronconfig1="3d24s2" electronconfig2="3d3(4F)4p" term1="a3F" term2="y3D°" J1="4" J2="3" /> + <spectrum intensity="600" wavelength="3981.761" aki="0.442" energy1="0.000" energy2="25107.410" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(1P°)" term1="a3F" term2="y3F°" J1="2" J2="2" /> + <spectrum intensity="700" wavelength="3989.758" aki="0.448" energy1="170.134" energy2="25227.220" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(1P°)" term1="a3F" term2="y3F°" J1="3" J2="3" /> + <spectrum intensity="1000" wavelength="3998.636" aki="0.481" energy1="386.875" energy2="25388.331" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(1P°)" term1="a3F" term2="y3F°" J1="4" J2="4" /> + <spectrum intensity="800" wavelength="4305.907" aki="6842.965" energy1="3d3(4F)4s" energy2="3d3(4F)4p" electronconfig1="a5F" electronconfig2="x5D°" term1="5" term2="4" J1="30060.338" J2="" /> + <spectrum intensity="700" wavelength="4981.730" aki="0.660" energy1="6842.965" energy2="26910.712" electronconfig1="3d3(4F)4s" electronconfig2="3d3(4F)4p" term1="a5F" term2="y5G°" J1="5" J2="6" /> + <spectrum intensity="600" wavelength="4991.066" aki="0.584" energy1="6742.755" energy2="26772.969" electronconfig1="3d3(4F)4s" electronconfig2="3d3(4F)4p" term1="a5F" term2="y5G°" J1="4" J2="5" /> + <spectrum intensity="400" wavelength="5007.206" aki="0.492" energy1="6598.764" energy2="26564.398" electronconfig1="3d3(4F)4s" electronconfig2="3d3(4F)4p" term1="a5F" term2="y5G°" J1="2" J2="3" /> + <spectrum intensity="400" wavelength="5014.186" aki="0.0611" energy1="0.000" energy2="19937.852" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(3P°)" term1="a3F" term2="z3D°" J1="2" J2="1" /> + <spectrum intensity="200" wavelength="5064.651" aki="0.0437" energy1="386.875" energy2="20126.060" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(3P°)" term1="a3F" term2="z3D°" J1="4" J2="3" /> + <spectrum intensity="200" wavelength="5210.384" aki="0.0411" energy1="386.875" energy2="19573.973" electronconfig1="3d24s2" electronconfig2="3d2(3F)4s4p(3P°)" term1="a3F" term2="z3F°" J1="4" J2="4" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="W. Gregor">1791</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity>-8</electronaffinity> + <electronegativity>1.54</electronegativity> + <meltingpoint>1935</meltingpoint> + <boilingpoint>3560</boilingpoint> + <density>4.51</density> + <ionisationenergy> + <energy>6.82 </energy> + </ionisationenergy> + <radius> + <covalent>144.8</covalent> + <atomic>140</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 3d2 4s2</orbits> + <oxydation>+4.+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="45.953" neutron="24" percentage="7.95" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2-" magmoment="-0.78848" halflife="" halflifeformat="seconds" weight="46.952" neutron="25" percentage="7.75" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="47.948" neutron="26" percentage="73.45" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="-1.10417" halflife="" halflifeformat="seconds" weight="48.948" neutron="27" percentage="5.51" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="49.945" neutron="28" percentage="5.34" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>23</number> + <name origin="'Vanadis' is another name for the Nordic goddess Freyja">Vanadium</name> + <symbol>V</symbol> + <period>4</period> + <mass>50.9415</mass> + <block>d</block> + <spectra> + <spectrum intensity="250" wavelength="3183.412" aki="2.4" energy1="137.382" energy2="31541.147" electronconfig1="3d34s2" electronconfig2="3d3(4F)4s4p(1P°)" term1="a4F" term2="x" J1="5/2" J2="4G°" /> + <spectrum intensity="400" wavelength="3183.992" aki="2.5" energy1="323.457" energy2="31721.708" electronconfig1="3d34s2" electronconfig2="3d3(4F)4s4p(1P°)" term1="a4F" term2="x" J1="7/2" J2="4G°" /> + <spectrum intensity="300" wavelength="3185.385" aki="2.8" energy1="552.961" energy2="31937.266" electronconfig1="3d34s2" electronconfig2="3d3(4F)4s4p(1P°)" term1="a4F" term2="x" J1="9/2" J2="4G°" /> + <spectrum intensity="300" wavelength="3703.574" aki="0.92" energy1="2424.783" energy2="29418.073" electronconfig1="3d4(5D)4s" electronconfig2="3d3(4P)4s4p(3P°)" term1="a6D" term2="y" J1="9/2" J2="6P°" /> + <spectrum intensity="250" wavelength="3855.845" aki="0.578" energy1="552.961" energy2="26480.291" electronconfig1="3d34s2" electronconfig2="3d4(5D)4p" term1="a4F" term2="y" J1="9/2" J2="4D°" /> + <spectrum intensity="200" wavelength="3902.256" aki="0.268" energy1="552.961" energy2="26171.916" electronconfig1="3d34s2" electronconfig2="3d4(5D)4p" term1="a4F" term2="y" J1="9/2" J2="4F°" /> + <spectrum intensity="700" wavelength="4111.780" aki="1.01" energy1="2424.783" energy2="26738.318" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="9/2" J2="6D°" /> + <spectrum intensity="400" wavelength="4115.180" aki="0.58" energy1="2311.355" energy2="26604.796" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="7/2" J2="6D°" /> + <spectrum intensity="250" wavelength="4128.064" aki="0.77" energy1="2220.106" energy2="26437.640" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="5/2" J2="6D°" /> + <spectrum intensity="250" wavelength="4131.989" aki="0.55" energy1="2311.355" energy2="26505.932" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="7/2" J2="6D°" /> + <spectrum intensity="1000" wavelength="4379.230" aki="1.1" energy1="2424.783" energy2="25253.432" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="9/2" J2="6F°" /> + <spectrum intensity="600" wavelength="4384.710" aki="1.1" energy1="2311.355" energy2="25111.467" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="7/2" J2="6F°" /> + <spectrum intensity="400" wavelength="4389.980" aki="0.69" energy1="2220.106" energy2="24992.884" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="5/2" J2="6F°" /> + <spectrum intensity="300" wavelength="4395.223" aki="0.55" energy1="2153.207" energy2="24898.771" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="3/2" J2="6F°" /> + <spectrum intensity="300" wavelength="4408.195" aki="0.60" energy1="2220.106" energy2="24898.771" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a6D" term2="y" J1="5/2" J2="6F°" /> + <spectrum intensity="400" wavelength="4408.501" aki="2153.207" energy1="3d4(5D)4s" energy2="3d4(5D)4p" electronconfig1="a6D" electronconfig2="y" term1="3/2" term2="6F°" J1="24830.228" J2="3/2" /> + <spectrum intensity="110" wavelength="6090.208" aki="0.26" energy1="8715.761" energy2="25131.005" electronconfig1="3d4(5D)4s" electronconfig2="3d4(5D)4p" term1="a4D" term2="z" J1="7/2" J2="4P°" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="N. Sefström">1830</date> + <biologicalmeaning>4</biologicalmeaning> + <group>5</group> + <electronaffinity>-51</electronaffinity> + <electronegativity>1.63</electronegativity> + <meltingpoint>2163</meltingpoint> + <boilingpoint>3650</boilingpoint> + <density>6.09</density> + <ionisationenergy> + <energy>6.74 </energy> + </ionisationenergy> + <radius> + <covalent>125</covalent> + <atomic>135</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 3d3 4s2</orbits> + <oxydation>+5.(+2.+3.+4)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="17.0" betaminusdecay="" ecpercentage="83" ecdecay="" spin="6+" magmoment="+3.34745" halflife="140000000000000000" halflifeformat="years" weight="49.93643" neutron="27" percentage="0.25" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="+5.1574" halflife="" halflifeformat="seconds" weight="50.94396" neutron="28" percentage="99.750" /> + </isotopes> + <family>Transition</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>24</number> + <name origin="Greek 'chroma' means 'color'">Chromium</name> + <symbol>Cr</symbol> + <period>4</period> + <mass>51.9961</mass> + <spectra> + <spectrum intensity="1000" wavelength="3578.682" aki="1.48" energy1="0.00" energy2="27935.26" electronconfig1="3d5(6S)4s" electronconfig2="3d4(5D)4s4p(3P°)" term1="a7S" term2="y7P°" J1="3" J2="4" /> + <spectrum intensity="800" wavelength="3593.481" aki="1.50" energy1="0.00" energy2="27820.23" electronconfig1="3d5(6S)4s" electronconfig2="3d4(5D)4s4p(3P°)" term1="a7S" term2="y7P°" J1="3" J2="3" /> + <spectrum intensity="600" wavelength="3605.320" aki="1.62" energy1="0.00" energy2="27728.87" electronconfig1="3d5(6S)4s" electronconfig2="3d4(5D)4s4p(3P°)" term1="a7S" term2="y7P°" J1="3" J2="2" /> + <spectrum intensity="1000" wavelength="4254.331" aki="0.315" energy1="0.00" energy2="23498.84" electronconfig1="3d5(6S)4s" electronconfig2="3d5(6S)4p" term1="a7S" term2="z7P°" J1="3" J2="4" /> + <spectrum intensity="800" wavelength="4274.806" aki="0.307" energy1="0.00" energy2="23386.35" electronconfig1="3d5(6S)4s" electronconfig2="3d5(6S)4p" term1="a7S" term2="z7P°" J1="3" J2="3" /> + <spectrum intensity="500" wavelength="4289.733" aki="0.316" energy1="0.00" energy2="23305.01" electronconfig1="3d5(6S)4s" electronconfig2="3d5(6S)4p" term1="a7S" term2="z7P°" J1="3" J2="2" /> + <spectrum intensity="250" wavelength="5204.505" aki="0.509" energy1="7593.16" energy2="26801.93" electronconfig1="3d5(6S)4s" electronconfig2="3d5(6S)4p" term1="a5S" term2="z5P°" J1="2" J2="1" /> + <spectrum intensity="400" wavelength="5206.021" aki="0.514" energy1="7593.16" energy2="26796.28" electronconfig1="3d5(6S)4s" electronconfig2="3d5(6S)4p" term1="a5S" term2="z5P°" J1="2" J2="2" /> + <spectrum intensity="600" wavelength="5208.415" aki="0.506" energy1="7593.16" energy2="26787.50" electronconfig1="3d5(6S)4s" electronconfig2="3d5(6S)4p" term1="a5S" term2="z5P°" J1="2" J2="3" /> + </spectra> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="L. N. Vauquelin">1797</date> + <biologicalmeaning>4</biologicalmeaning> + <group>6</group> + <electronaffinity>-64</electronaffinity> + <electronegativity>1.66</electronegativity> + <meltingpoint>2130</meltingpoint> + <boilingpoint>2945</boilingpoint> + <density>7.14</density> + <ionisationenergy> + <energy>6.766</energy> + </ionisationenergy> + <radius> + <covalent>124.9</covalent> + <atomic>140</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 3d5 4s1</orbits> + <oxydation>+2.+3.(+1.+4.+5).+6</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="49.946" neutron="26" percentage="4.35" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="51.94" neutron="28" percentage="83.79" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="-0.47454" halflife="" halflifeformat="seconds" weight="52.941" neutron="29" percentage="9.50" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="53.939" neutron="30" percentage="2.36" /> + </isotopes> + <family>Transition</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>25</number> + <name origin="It was discovered near a town named Magnesia in a black earth. Thus. it was named 'magnesia nigra'. short: Manganese">Manganese</name> + <symbol>Mn</symbol> + <period>4</period> + <mass>54.938049</mass> + <block>d</block> + <spectra> + <spectrum intensity="400" wavelength="1996.056" aki="0.77" energy1="0.00" energy2="50099.03" electronconfig1="3d54s2" electronconfig2="3d5(4P)4s4p(3P°)" term1="a6S" term2="v6P°" J1="5/2" J2="3/2" /> + <spectrum intensity="500" wavelength="1999.511" aki="0.76" energy1="0.00" energy2="50012.50" electronconfig1="3d54s2" electronconfig2="3d5(4P)4s4p(3P°)" term1="a6S" term2="v6P°" J1="5/2" J2="5/2" /> + <spectrum intensity="700" wavelength="2003.849" aki="0.76" energy1="0.00" energy2="49888.01" electronconfig1="3d54s2" electronconfig2="3d5(4P)4s4p(3P°)" term1="a6S" term2="v6P°" J1="5/2" J2="7/2" /> + <spectrum intensity="250" wavelength="2794.817" aki="3.7" energy1="0.00" energy2="35769.97" electronconfig1="3d54s2" electronconfig2="3d5(6S)4s4p(1P°)" term1="a6S" term2="y6P°" J1="5/2" J2="7/2" /> + <spectrum intensity="200" wavelength="2798.270" aki="3.6" energy1="0.00" energy2="35725.85" electronconfig1="3d54s2" electronconfig2="3d5(6S)4s4p(1P°)" term1="a6S" term2="y6P°" J1="5/2" J2="5/2" /> + <spectrum intensity="140" wavelength="2801.084" aki="3.7" energy1="0.00" energy2="35689.98" electronconfig1="3d54s2" electronconfig2="3d5(6S)4s4p(1P°)" term1="a6S" term2="y6P°" J1="5/2" J2="3/2" /> + <spectrum intensity="120" wavelength="3806.715" aki="0.59" energy1="17052.29" energy2="43314.23" electronconfig1="3d6(5D)4s" electronconfig2="3d6(5D)4p" term1="a6D" term2="z6F°" J1="9/2" J2="11/2" /> + <spectrum intensity="1000" wavelength="4030.755" aki="0.17" energy1="0.00" energy2="24802.25" electronconfig1="3d54s2" electronconfig2="3d5(6S)4s4p(3P°)" term1="a6S" term2="z6P°" J1="5/2" J2="7/2" /> + <spectrum intensity="700" wavelength="4033.068" aki="0.165" energy1="0.00" energy2="24788.05" electronconfig1="3d54s2" electronconfig2="3d5(6S)4s4p(3P°)" term1="a6S" term2="z6P°" J1="5/2" J2="5/2" /> + <spectrum intensity="400" wavelength="4034.485" aki="0.158" energy1="0.00" energy2="24779.32" electronconfig1="3d54s2" electronconfig2="3d5(6S)4s4p(3P°)" term1="a6S" term2="z6P°" J1="5/2" J2="3/2" /> + <spectrum intensity="200" wavelength="4041.357" aki="0.787" energy1="17052.29" energy2="41789.48" electronconfig1="3d6(5D)4s" electronconfig2="3d6(5D)4p" term1="a6D" term2="z6D°" J1="9/2" J2="9/2" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="C. W. Scheele">1774</date> + <biologicalmeaning>1</biologicalmeaning> + <group>7</group> + <electronaffinity></electronaffinity> + <electronegativity>1.55</electronegativity> + <meltingpoint>1518</meltingpoint> + <boilingpoint>2235</boilingpoint> + <density>7.44</density> + <ionisationenergy> + <energy>7.435</energy> + </ionisationenergy> + <radius> + <covalent>139</covalent> + <atomic>140</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 3d5 4s2</orbits> + <oxydation>+2.+4.(+5).+6.+7</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="1.377" spin="3+" magmoment="+3.2818" halflife="26967168" halflifeformat="seconds" weight="53.94036" neutron="29" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2-" magmoment="+3.4687" halflife="" halflifeformat="seconds" weight="54.93805" neutron="30" percentage="100" /> + </isotopes> + <family>Transition</family> + <crystalstructure>own</crystalstructure> + </element> + <element> + <number>26</number> + <name origin="Latin 'ferrum'">Iron</name> + <symbol>Fe</symbol> + <spectra> + <spectrum intensity="1000" wavelength="2483.2708" aki="4.81" energy1="0.000" energy2="40257.311" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(1P)" term1="a5D" term2="x5F°" J1="4" J2="5" /> + <spectrum intensity="600" wavelength="2488.1426" aki="4.20" energy1="415.933" energy2="40594.429" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(1P)" term1="a5D" term2="x5F°" J1="3" J2="4" /> + <spectrum intensity="500" wavelength="2490.6443" aki="3.45" energy1="704.007" energy2="40842.151" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(1P)" term1="a5D" term2="x5F°" J1="2" J2="3" /> + <spectrum intensity="400" wavelength="2522.8494" aki="2.13" energy1="0.000" energy2="39625.801" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(1P)" term1="a5D" term2="x5D°" J1="4" J2="4" /> + <spectrum intensity="400" wavelength="2719.0273" aki="1.42" energy1="0.000" energy2="36766.964" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(1P)" term1="a5D" term2="y5P°" J1="4" J2="3" /> + <spectrum intensity="300" wavelength="2788.1047" aki="0.59" energy1="6928.268" energy2="42784.349" electronconfig1="3d7(4F)4s" electronconfig2="3d6(3H)4s4p(3P)" term1="a5F" term2="y5G°" J1="5" J2="6" /> + <spectrum intensity="400" wavelength="3440.6060" aki="0.171" energy1="0.000" energy2="29056.322" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(3P)" term1="a5D" term2="z5P°" J1="4" J2="3" /> + <spectrum intensity="600" wavelength="3581.1931" aki="1.02" energy1="6928.268" energy2="34843.955" electronconfig1="3d7(4F)4s" electronconfig2="3d7(4F)4p" term1="a5F" term2="z5G°" J1="5" J2="6" /> + <spectrum intensity="600" wavelength="3719.9348" aki="0.162" energy1="0.000" energy2="26874.548" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(3P)" term1="a5D" term2="z5F°" J1="4" J2="5" /> + <spectrum intensity="700" wavelength="3734.8638" aki="0.902" energy1="6928.268" energy2="33695.395" electronconfig1="3d7(4F)4s" electronconfig2="3d7(4F)4p" term1="a5F" term2="y5F°" J1="5" J2="5" /> + <spectrum intensity="600" wavelength="3737.1316" aki="0.141" energy1="415.933" energy2="27166.818" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(3P)" term1="a5D" term2="z5F°" J1="3" J2="4" /> + <spectrum intensity="600" wavelength="3745.5613" aki="0.115" energy1="704.007" energy2="27394.689" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(3P)" term1="a5D" term2="z5F°" J1="2" J2="3" /> + <spectrum intensity="300" wavelength="3748.2622" aki="0.0914" energy1="888.132" energy2="27559.581" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(3P)" term1="a5D" term2="z5F°" J1="1" J2="2" /> + <spectrum intensity="400" wavelength="3749.4854" aki="0.764" energy1="7376.764" energy2="34039.514" electronconfig1="3d7(4F)4s" electronconfig2="3d7(4F)4p" term1="a5F" term2="y5F°" J1="4" J2="4" /> + <spectrum intensity="300" wavelength="3758.2329" aki="0.634" energy1="7728.059" energy2="34328.750" electronconfig1="3d7(4F)4s" electronconfig2="3d7(4F)4p" term1="a5F" term2="y5F°" J1="3" J2="3" /> + <spectrum intensity="500" wavelength="3820.4253" aki="0.668" energy1="6928.268" energy2="33095.939" electronconfig1="3d7(4F)4s" electronconfig2="3d7(4F)4p" term1="a5F" term2="y5D°" J1="5" J2="4" /> + <spectrum intensity="500" wavelength="3859.9114" aki="0.0969" energy1="0.000" energy2="25899.987" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(3P)" term1="a5D" term2="z5D°" J1="4" J2="4" /> + <spectrum intensity="300" wavelength="3886.2822" aki="0.0530" energy1="415.933" energy2="26140.177" electronconfig1="3d64s2" electronconfig2="3d6(5D)4s4p(3P)" term1="a5D" term2="z5D°" J1="3" J2="3" /> + <spectrum intensity="300" wavelength="4045.8125" aki="0.863" energy1="11976.238" energy2="36686.174" electronconfig1="3d7(4F)4s" electronconfig2="3d7(4F)4p" term1="a3F" term2="y3F°" J1="4" J2="4" /> + <spectrum intensity="200" wavelength="4383.5449" aki="0.500" energy1="11976.238" energy2="34782.419" electronconfig1="3d7(4F)4s" electronconfig2="3d7(4F)4p" term1="a3F" term2="z5G°" J1="4" J2="5" /> + </spectra> + <period>4</period> + <mass>55.845</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>1</biologicalmeaning> + <group>8</group> + <electronaffinity>-16</electronaffinity> + <electronegativity>1.83</electronegativity> + <meltingpoint>1808</meltingpoint> + <boilingpoint>3023</boilingpoint> + <density>7.874</density> + <ionisationenergy> + <energy>7.870 </energy> + </ionisationenergy> + <radius> + <covalent>124.1</covalent> + <atomic>140</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 3d6 4s2</orbits> + <oxydation>+2.+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="53.94" neutron="28" percentage="5.81" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="55.935" neutron="30" percentage="91.64" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="+0.09044" halflife="" halflifeformat="seconds" weight="56.935" neutron="31" percentage="2.21" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="57.933" neutron="32" percentage="0.34" /> + </isotopes> + <family>Transition</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>27</number> + <name origin="Named after the German word 'Kobold' for 'goblin'">Cobalt</name> + <symbol>Co</symbol> + <period>4</period> + <mass>58.933200</mass> + <spectra> + <spectrum intensity="250" wavelength="2407.256" aki="3.6" energy1="0.000" energy2="41528.455" electronconfig1="3d74s2" electronconfig2="3d7(4F)4s4p(1P°)" term1="a4F" term2="x" J1="9/2" J2="4G°" /> + <spectrum intensity="250" wavelength="2411.624" aki="3.5" energy1="816.000" energy2="42269.229" electronconfig1="3d74s2" electronconfig2="3d7(4F)4s4p(1P°)" term1="a4F" term2="x" J1="7/2" J2="4G°" /> + <spectrum intensity="200" wavelength="2424.935" aki="3.2" energy1="0.000" energy2="41225.710" electronconfig1="3d74s2" electronconfig2="3d7(4F)4s4p(1P°)" term1="a4F" term2="x4F°" J1="9/2" J2="9/2" /> + <spectrum intensity="200" wavelength="2521.365" aki="3.0" energy1="0.000" energy2="39649.124" electronconfig1="3d74s2" electronconfig2="3d7(4F)4s4p(1P°)" term1="a4F" term2="x4D°" J1="9/2" J2="7/2" /> + <spectrum intensity="500" wavelength="3405.118" aki="1.0" energy1="482.780" energy2="32841.916" electronconfig1="3d8(3F)4s" electronconfig2="3d8(3F)4p" term1="b4F" term2="y4F°" J1="9/2" J2="9/2" /> + <spectrum intensity="400" wavelength="3443.645" aki="0.69" energy1="142.631" energy2="33173.313" electronconfig1="3d8(3F)4s" electronconfig2="3d8(3F)4p" term1="b4F" term2="y4F°" J1="7/2" J2="7/2" /> + <spectrum intensity="1000" wavelength="3453.510" aki="1.1" energy1="3482.780" energy2="32430.535" electronconfig1="3d8(3F)4s" electronconfig2="3d8(3F)4p" term1="b4F" term2="y4G°" J1="9/2" J2="11/2" /> + <spectrum intensity="400" wavelength="3473.974" aki="0.0299" energy1="0.000" energy2="28777.236" electronconfig1="3d74s2" electronconfig2="3d7(4F)4s4p(3P°)" term1="a4F" term2="z4F°" J1="9/2" J2="7/2" /> + <spectrum intensity="400" wavelength="3474.042" aki="0.56" energy1="690.141" energy2="33466.823" electronconfig1="3d8(3F)4s" electronconfig2="3d8(3F)4p" term1="b4F" term2="y4G°" J1="5/2" J2="7/2" /> + <spectrum intensity="500" wavelength="3502.280" aki="0.80" energy1="482.780" energy2="32027.440" electronconfig1="3d8(3F)4s" electronconfig2="3d8(3F)4p" term1="b4F" term2="y4D°" J1="9/2" J2="7/2" /> + <spectrum intensity="300" wavelength="3526.850" aki="0.137" energy1="0.000" energy2="28345.814" electronconfig1="3d74s2" electronconfig2="3d7(4F)4s4p(3P°)" term1="a4F" term2="z4F°" J1="9/2" J2="9/2" /> + <spectrum intensity="300" wavelength="3529.808" aki="0.46" energy1="142.631" energy2="32464.688" electronconfig1="3d8(3F)4s" electronconfig2="3d8(3F)4p" term1="b4F" term2="y4G°" J1="7/2" J2="9/2" /> + <spectrum intensity="400" wavelength="3569.376" aki="1.6" energy1="442.399" energy2="35450.505" electronconfig1="3d8(3F)4s" electronconfig2="3d8(3F)4p" term1="a2F" term2="y2F°" J1="7/2" J2="7/2" /> + </spectra> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="G. Brandt">1737</date> + <biologicalmeaning>2</biologicalmeaning> + <group>8</group> + <electronaffinity>-64</electronaffinity> + <electronegativity>1.88</electronegativity> + <meltingpoint>1768</meltingpoint> + <boilingpoint>3143</boilingpoint> + <density>8.89</density> + <ionisationenergy> + <energy>7.86 </energy> + </ionisationenergy> + <radius> + <covalent>125.3</covalent> + <atomic>135</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 3d7 4s2</orbits> + <oxydation>+2.+3.(+4)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="100.0" betaplusdecay="4.566" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="" spin="4+" magmoment="" halflife="6663168" halflifeformat="seconds" weight="55.93984" neutron="29" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.836" spin="7/2-" magmoment="" halflife="23483520" halflifeformat="seconds" weight="56.93629" neutron="30" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="100.0" betaplusdecay="2.3" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="" spin="2+" magmoment="" halflife="6118848" halflifeformat="seconds" weight="57.93576" neutron="31" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="+4.627" halflife="" halflifeformat="seconds" weight="58.93320" neutron="32" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="2.824" ecpercentage="" ecdecay="" spin="5+" magmoment="+3.799" halflife="5.2714" halflifeformat="years" weight="59.93382" neutron="33" percentage="" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>28</number> + <name origin="'Nickel' was the name of a mountain goblin">Nickel</name> + <symbol>Ni</symbol> + <period>4</period> + <mass>58.6934</mass> + <block>d</block> + <spectra> + <spectrum intensity="300" wavelength="2320.034" aki="6.94" energy1="0.000" energy2="43089.578" electronconfig1="3d8(3F)4s2" electronconfig2="3d8(3F)4s4p(1P°)" term1="3F" term2="3G°" J1="4" J2="5" /> + <spectrum intensity="150" wavelength="2345.543" aki="2.23" energy1="0.000" energy2="42620.994" electronconfig1="3d8(3F)4s2" electronconfig2="3d8(1D)4s4p(3P°)" term1="3F" term2="3D°" J1="4" J2="3" /> + <spectrum intensity="500" wavelength="3002.485" aki="0.903" energy1="204.787" energy2="33500.822" electronconfig1="3d9(2D)4s" electronconfig2="3d8(3F)4s4p(3P°)" term1="3D" term2="3D°" J1="3" J2="3" /> + <spectrum intensity="500" wavelength="3012.001" aki="1.3" energy1="3409.937" energy2="36600.791" electronconfig1="3d9(2D)4s" electronconfig2="3d8(3F)4s4p(3P°)" term1="1D" term2="1D°" J1="2" J2="2" /> + <spectrum intensity="400" wavelength="3050.816" aki="0.604" energy1="204.787" energy2="32973.376" electronconfig1="3d9(2D)4s" electronconfig2="3d8(3F)4s4p(3P°)" term1="3D" term2="3F°" J1="3" J2="4" /> + <spectrum intensity="300" wavelength="3101.557" aki="0.699" energy1="879.816" energy2="33112.334" electronconfig1="3d9(2D)4s" electronconfig2="3d8(3F)4s4p(3P°)" term1="3D" term2="3F°" J1="2" J2="3" /> + <spectrum intensity="400" wavelength="3134.104" aki="0.749" energy1="1713.087" energy2="33610.890" electronconfig1="3d9(2D)4s" electronconfig2="3d8(3F)4s4p(3P°)" term1="3D" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="1000" wavelength="3414.764" aki="0.615" energy1="204.787" energy2="29480.989" electronconfig1="3d9(2D)4s" electronconfig2="3d9(2D)4p" term1="3D" term2="3F°" J1="3" J2="4" /> + <spectrum intensity="600" wavelength="3446.259" aki="0.455" energy1="879.816" energy2="29888.477" electronconfig1="3d9(2D)4s" electronconfig2="3d9(2D)4p" term1="3D" term2="3D°" J1="2" J2="2" /> + <spectrum intensity="600" wavelength="3458.460" aki="0.667" energy1="1713.087" energy2="30619.414" electronconfig1="3d9(2D)4s" electronconfig2="3d9(2D)4p" term1="3D" term2="3F°" J1="1" J2="2" /> + <spectrum intensity="600" wavelength="3461.652" aki="0.278" energy1="204.787" energy2="29084.456" electronconfig1="3d9(2D)4s" electronconfig2="3d8(3F)4s4p(3P°)" term1="3D" term2="5F°" J1="3" J2="4" /> + <spectrum intensity="700" wavelength="3492.956" aki="1.02" energy1="879.816" energy2="29500.674" electronconfig1="3d9(2D)4s" electronconfig2="3d9(2D)4p" term1="3D" term2="3P°" J1="2" J2="1" /> + <spectrum intensity="800" wavelength="3515.052" aki="0.474" energy1="879.816" energy2="29320.762" electronconfig1="3d9(2D)4s" electronconfig2="3d9(2D)4p" term1="3D" term2="3F°" J1="2" J2="3" /> + <spectrum intensity="1000" wavelength="3524.536" aki="1.09" energy1="204.787" energy2="28569.203" electronconfig1="3d9(2D)4s" electronconfig2="3d9(2D)4p" term1="3D" term2="3P°" J1="3" J2="2" /> + <spectrum intensity="600" wavelength="3566.372" aki="0.56" energy1="3409.937" energy2="31441.635" electronconfig1="3d9(2D)4s" electronconfig2="3d9(2D)4p" term1="1D" term2="1D°" J1="2" J2="2" /> + <spectrum intensity="800" wavelength="3619.391" aki="0.66" energy1="3409.937" energy2="31031.020" electronconfig1="3d9(2D)4s" electronconfig2="3d9(2D)4p" term1="1D" term2="1F°" J1="2" J2="3" /> + </spectra> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="A. F. Cronstedt">1751</date> + <biologicalmeaning>4</biologicalmeaning> + <group>8</group> + <electronaffinity>-112</electronaffinity> + <electronegativity>1.91</electronegativity> + <meltingpoint>1726</meltingpoint> + <boilingpoint>3005</boilingpoint> + <density>8.91</density> + <ionisationenergy> + <energy>7.635 </energy> + </ionisationenergy> + <radius> + <covalent>124.6</covalent> + <atomic>135</atomic> + <vdw>163</vdw> + </radius> + <orbits>Ar 3d8 4s2</orbits> + <oxydation>0.(+2).+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="57.935" neutron="30" percentage="67.8" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="1.072" spin="3/2-" magmoment="" halflife="75000" halflifeformat="years" weight="58.93435" neutron="31" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="59.931" neutron="32" percentage="26.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="-0.75002" halflife="" halflifeformat="seconds" weight="60.931" neutron="33" percentage="1.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="61.928" neutron="34" percentage="3.7" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.065" ecpercentage="" ecdecay="" spin="1/2-" magmoment="" halflife="100.1" halflifeformat="years" weight="62.92967" neutron="35" percentage="1.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="63.928" neutron="36" percentage="1.1" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>29</number> + <name origin="Greek 'cuprum' for Cypres">Copper</name> + <symbol>Cu</symbol> + <period>4</period> + <mass>63.546</mass> + <spectra> + <spectrum intensity="130" wavelength="2165.09" aki="0.547" energy1="0.000" energy2="46172.842" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="" J1="1/2" J2="3/2" /> + <spectrum intensity="150" wavelength="2178.94" aki="0.913" energy1="0.000" energy2="45879.311" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="150" wavelength="2181.72" aki="0.994" energy1="0.000" energy2="45821.00" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="200" wavelength="2225.70" aki="0.444" energy1="0.000" energy2="44915.61" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="4D°" J1="1/2" J2="1/2" /> + <spectrum intensity="250" wavelength="2230.08" aki="11202.565" energy1="3d94s2" energy2="3d9(2D)4s4p(1P°)" electronconfig1="2D" electronconfig2="2F°" term1="5/2" term2="" J1="56029.95" J2="7/2" /> + <spectrum intensity="250" wavelength="2244.26" aki="0.0185" energy1="0.000" energy2="44544.153" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="4D°" J1="1/2" J2="3/2" /> + <spectrum intensity="100" wavelength="2441.64" aki="0.0201" energy1="0.000" energy2="40943.73" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="4P°" J1="1/2" J2="1/2" /> + <spectrum intensity="200" wavelength="2492.15" aki="0.0279" energy1="0.000" energy2="40113.99" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="4P°" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="3247.54" aki="1.37" energy1="0.000" energy2="30783.686" electronconfig1="3d10(1S)4s" electronconfig2="3d10(1S)4p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="3273.96" aki="1.36" energy1="0.000" energy2="30535.302" electronconfig1="3d10(1S)4s" electronconfig2="3d10(1S)4p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="150" wavelength="5105.54" aki="0.020" energy1="11202.565" energy2="30783.686" electronconfig1="3d94s2" electronconfig2="3d10(1S)4p" term1="2D" term2="2P°" J1="5/2" J2="3/2" /> + <spectrum intensity="200" wavelength="5153.24" aki="0.60" energy1="30535.302" energy2="49935.200" electronconfig1="3d10(1S)4p" electronconfig2="3d10(1S)4d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="250" wavelength="5218.20" aki="0.75" energy1="30783.686" energy2="49942.057" electronconfig1="3d10(1S)4p" electronconfig2="3d10(1S)4d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + </spectra> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>1</biologicalmeaning> + <group>1</group> + <electronaffinity>-118</electronaffinity> + <electronegativity>1.90</electronegativity> + <meltingpoint>1356.6</meltingpoint> + <boilingpoint>2840</boilingpoint> + <density>8.92</density> + <ionisationenergy> + <energy>7.726</energy> + <energy>19.579</energy> + <energy>35.55</energy> + </ionisationenergy> + <radius> + <covalent>138</covalent> + <atomic>135</atomic> + <vdw>140</vdw> + </radius> + <orbits>Ar 3d10 4s1</orbits> + <oxydation>+1.+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+2.2233" halflife="" halflifeformat="seconds" weight="62.93" neutron="34" percentage="68.9" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="19.0" betaplusdecay="1.7" betaminuspercentage="39.0" betaminusdecay="0.578" ecpercentage="41.0" ecdecay="1.675" spin="1+" magmoment="-0.217" halflife="45723.6" halflifeformat="seconds" weight="63.92977" neutron="35" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+2.3817" halflife="" halflifeformat="seconds" weight="64.928" neutron="36" percentage="31.1" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>30</number> + <name origin="German 'zinking' for 'rough'. because zinc ore is very rough">Zinc</name> + <symbol>Zn</symbol> + <period>4</period> + <mass>65.39</mass> + <block>d</block> + <spectra> + <spectrum intensity="130" wavelength="2165.09" aki="0.547" energy1="0.000" energy2="46172.842" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="" J1="1/2" J2="3/2" /> + <spectrum intensity="150" wavelength="2178.94" aki="0.913" energy1="0.000" energy2="45879.311" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="150" wavelength="2181.72" aki="0.994" energy1="0.000" energy2="45821.00" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="200" wavelength="2225.70" aki="0.444" energy1="0.000" energy2="44915.61" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="4D°" J1="1/2" J2="1/2" /> + <spectrum intensity="250" wavelength="2230.08" aki="11202.565" energy1="3d94s2" energy2="3d9(2D)4s4p(1P°)" electronconfig1="2D" electronconfig2="2F°" term1="5/2" term2="" J1="56029.95" J2="7/2" /> + <spectrum intensity="250" wavelength="2244.26" aki="0.0185" energy1="0.000" energy2="44544.153" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="4D°" J1="1/2" J2="3/2" /> + <spectrum intensity="100" wavelength="2441.64" aki="0.0201" energy1="0.000" energy2="40943.73" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="4P°" J1="1/2" J2="1/2" /> + <spectrum intensity="200" wavelength="2492.15" aki="0.0279" energy1="0.000" energy2="40113.99" electronconfig1="3d10(1S)4s" electronconfig2="3d9(2D)4s4p(3P°)" term1="2S" term2="4P°" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="3247.54" aki="1.37" energy1="0.000" energy2="30783.686" electronconfig1="3d10(1S)4s" electronconfig2="3d10(1S)4p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="3273.96" aki="1.36" energy1="0.000" energy2="30535.302" electronconfig1="3d10(1S)4s" electronconfig2="3d10(1S)4p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="150" wavelength="5105.54" aki="0.020" energy1="11202.565" energy2="30783.686" electronconfig1="3d94s2" electronconfig2="3d10(1S)4p" term1="2D" term2="2P°" J1="5/2" J2="3/2" /> + <spectrum intensity="200" wavelength="5153.24" aki="0.60" energy1="30535.302" energy2="49935.200" electronconfig1="3d10(1S)4p" electronconfig2="3d10(1S)4d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="250" wavelength="5218.20" aki="0.75" energy1="30783.686" energy2="49942.057" electronconfig1="3d10(1S)4p" electronconfig2="3d10(1S)4d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="">1746</date> + <biologicalmeaning>1</biologicalmeaning> + <group>2</group> + <electronaffinity>47</electronaffinity> + <electronegativity>1.65</electronegativity> + <meltingpoint>692.73</meltingpoint> + <boilingpoint>1180</boilingpoint> + <density>7.14</density> + <ionisationenergy> + <energy>9.394 </energy> + </ionisationenergy> + <radius> + <covalent>131</covalent> + <atomic>133.2</atomic> + <vdw>139</vdw> + </radius> + <orbits>Ar 3d10 4s2</orbits> + <oxydation>+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="63.929" neutron="34" percentage="48.9" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="98.0" betaplusdecay="1.352" betaminuspercentage="" betaminusdecay="" ecpercentage="1.5" ecdecay="" spin="5/2-" magmoment="+0.7690" halflife="21072960" halflifeformat="seconds" weight="64.92924" neutron="35" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="65.926" neutron="36" percentage="27.82" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2-" magmoment="+0.87515" halflife="" halflifeformat="seconds" weight="66.927" neutron="37" percentage="4.16" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="67.925" neutron="38" percentage="18.5" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="69.925" neutron="40" percentage="0.62" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>31</number> + <name origin="'Gallia' is an old name for France">Gallium</name> + <symbol>Ga</symbol> + <period>4</period> + <mass>69.723</mass> + <block>p</block> + <spectra> + <spectrum intensity="400" wavelength="2874.235" aki="1.17" energy1="0.000" energy2="34781.66" electronconfig1="4s24p" electronconfig2="4s24d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="600" wavelength="2943.636" aki="1.34" energy1="826.19" energy2="34787.85" electronconfig1="4s24p" electronconfig2="4s24d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="200" wavelength="2944.173" aki="0.261" energy1="826.19" energy2="34781.66" electronconfig1="4s24p" electronconfig2="4s24d" term1="2P°" term2="2D" J1="3/2" J2="3/2" /> + <spectrum intensity="500" wavelength="4032.984" aki="0.485" energy1="0.000" energy2="24788.530" electronconfig1="4s24p" electronconfig2="4s25s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="4172.042" aki="0.945" energy1="826.19" energy2="24788.530" electronconfig1="4s24p" electronconfig2="4s25s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="P. E. Lecoq de Boisbaudran">1875</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <electronaffinity>-29</electronaffinity> + <electronegativity>1.81</electronegativity> + <meltingpoint>302.92</meltingpoint> + <boilingpoint>2478</boilingpoint> + <density>5.91</density> + <ionisationenergy> + <energy>5.999</energy> + <energy>20.5</energy> + <energy>30.7</energy> + </ionisationenergy> + <radius> + <covalent>126</covalent> + <atomic>130</atomic> + <vdw>187</vdw> + </radius> + <orbits>Ar 3d10 4s2 4p1</orbits> + <oxydation>(+1).(+2).+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+2.01659" halflife="" halflifeformat="seconds" weight="68.926" neutron="38" percentage="60.1" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="2.56227" halflife="" halflifeformat="seconds" weight="70.925" neutron="40" percentage="39.9" /> + </isotopes> + <family>Other_Metal</family> + <crystalstructure>own</crystalstructure> + </element> + <element> + <number>32</number> + <name origin="Latin 'germania' is an old name for Germany">Germanium</name> + <symbol>Ge</symbol> + <period>4</period> + <mass>72.64</mass> + <block>p</block> + <spectra> + <spectrum intensity="120" wavelength="1988.267" aki="0.41" energy1="1409.9609" energy2="51705.020" electronconfig1="4s24p2" electronconfig2="4s24p4d" term1="3P" term2="3P°" J1="2" J2="1" /> + <spectrum intensity="200" wavelength="1998.887" aki="1.24" energy1="1409.9609" energy2="51437.802" electronconfig1="4s24p2" electronconfig2="4s24p4d" term1="3P" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="700" wavelength="2019.068" aki="0.49" energy1="557.1341" energy2="50068.954" electronconfig1="4s24p2" electronconfig2="4s24p4d" term1="3P" term2="3F°" J1="1" J2="2" /> + <spectrum intensity="900" wavelength="2041.712" aki="1.51" energy1="0.0000" energy2="48962.783" electronconfig1="4s24p2" electronconfig2="4s24p4d" term1="3P" term2="3D°" J1="0" J2="1" /> + <spectrum intensity="600" wavelength="2043.770" aki="0.86" energy1="1409.9609" energy2="50323.465" electronconfig1="4s24p2" electronconfig2="4s24p4d" term1="3P" term2="3F°" J1="2" J2="3" /> + <spectrum intensity="1000" wavelength="2068.656" aki="1.2" energy1="557.1341" energy2="48882.263" electronconfig1="4s24p2" electronconfig2="4s24p4d" term1="3P" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="800" wavelength="2094.258" aki="1.70" energy1="1409.9609" energy2="49144.397" electronconfig1="4s24p2" electronconfig2="4s24p4d" term1="3P" term2="3D°" J1="2" J2="3" /> + <spectrum intensity="130" wavelength="2198.714" aki="7125.2989" energy1="4s24p2" energy2="4s24p4d" electronconfig1="1D" electronconfig2="1F°" term1="2" term2="" J1="52592.224" J2="3" /> + <spectrum intensity="200" wavelength="2592.534" aki="0.60" energy1="557.1341" energy2="39117.9021" electronconfig1="4s24p2" electronconfig2="4s24p5s" term1="3P" term2="3P°" J1="1" J2="2" /> + <spectrum intensity="500" wavelength="2651.172" aki="1.60" energy1="1409.9609" energy2="39117.9021" electronconfig1="4s24p2" electronconfig2="4s24p5s" term1="3P" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="200" wavelength="2651.568" aki="0.69" energy1="0.0000" energy2="37702.3054" electronconfig1="4s24p2" electronconfig2="4s24p5s" term1="3P" term2="3P°" J1="0" J2="1" /> + <spectrum intensity="200" wavelength="2691.341" aki="0.47" energy1="557.1341" energy2="37702.3054" electronconfig1="4s24p2" electronconfig2="4s24p5s" term1="3P" term2="3P°" J1="1" J2="1" /> + <spectrum intensity="300" wavelength="2709.624" aki="2.08" energy1="557.1341" energy2="37451.6893" electronconfig1="4s24p2" electronconfig2="4s24p5s" term1="3P" term2="3P°" J1="1" J2="0" /> + <spectrum intensity="250" wavelength="2754.588" aki="0.79" energy1="1409.9609" energy2="37702.3054" electronconfig1="4s24p2" electronconfig2="4s24p5s" term1="3P" term2="3P°" J1="2" J2="1" /> + <spectrum intensity="300" wavelength="3039.067" aki="2.04" energy1="7125.2989" energy2="40020.5604" electronconfig1="4s24p2" electronconfig2="4s24p5s" term1="1D" term2="1P°" J1="2" J2="1" /> + <spectrum intensity="40" wavelength="3269.489" aki="0.17" energy1="7125.2989" energy2="37702.3054" electronconfig1="4s24p2" electronconfig2="4s24p5s" term1="1D" term2="3P°" J1="2" J2="1" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="C. A. Winkler">1886</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity>-116</electronaffinity> + <electronegativity>2.01</electronegativity> + <meltingpoint>1211.5</meltingpoint> + <boilingpoint>3107</boilingpoint> + <density>5.32</density> + <ionisationenergy> + <energy>7.899 </energy> + </ionisationenergy> + <radius> + <covalent>122.5</covalent> + <atomic>125</atomic> + <vdw></vdw> + </radius> + <orbits>Ar 3d10 4s2 4p2</orbits> + <oxydation>+4.(+2)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="69.924" neutron="38" percentage="20.6" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="71.922" neutron="40" percentage="27.4" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="-0.879467" halflife="" halflifeformat="seconds" weight="72.923" neutron="41" percentage="7.8" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="73.921" neutron="42" percentage="36.4" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="75.921" neutron="44" percentage="7.8" /> + </isotopes> + <family>Metalloids</family> + <crystalstructure>d</crystalstructure> + </element> + <element> + <number>33</number> + <name origin="Greek 'arsenikos' for 'male' or 'bold'">Arsenic</name> + <symbol>As</symbol> + <period>4</period> + <mass>74.92160</mass> + <block>p</block> + <spectra> + <spectrum intensity="700" wavelength="1890.43" aki="2.7" energy1="0.000" energy2="52898.056" electronconfig1="4p3" electronconfig2="4p2(3P)5s" term1="4S°" term2="4P" J1="3/2" J2="5/2" /> + <spectrum intensity="400" wavelength="1937.59" aki="2.2" energy1="0.000" energy2="51610.393" electronconfig1="4p3" electronconfig2="4p2(3P)5s" term1="4S°" term2="4P" J1="3/2" J2="3/2" /> + <spectrum intensity="200" wavelength="1972.62" aki="2.0" energy1="0.000" energy2="50693.897" electronconfig1="4p3" electronconfig2="4p2(3P)5s" term1="4S°" term2="4P" J1="3/2" J2="1/2" /> + <spectrum intensity="50" wavelength="2288.12" aki="2.8" energy1="10914.866" energy2="54605.491" electronconfig1="4p3" electronconfig2="4p2(3P)5s" term1="2D°" term2="2P" J1="5/2" J2="3/2" /> + <spectrum intensity="100" wavelength="2349.84" aki="3.1" energy1="10592.666" energy2="53135.750" electronconfig1="4p3" electronconfig2="4p2(3P)5s" term1="2D°" term2="2P" J1="3/2" J2="1/2" /> + <spectrum intensity="70" wavelength="2370.77" aki="0.42" energy1="18647.663" energy2="60815.218" electronconfig1="4p3" electronconfig2="4p2(1D)5s" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="400" wavelength="2456.53" aki="0.072" energy1="10914.866" energy2="51610.393" electronconfig1="4p3" electronconfig2="4p2(3P)5s" term1="2D°" term2="4P" J1="5/2" J2="3/2" /> + <spectrum intensity="900" wavelength="2780.22" aki="0.78" energy1="18647.663" energy2="54605.491" electronconfig1="4p3" electronconfig2="4p2(3P)5s" term1="2P°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="2860.44" aki="0.55" energy1="18186.328" energy2="53135.750" electronconfig1="4p3" electronconfig2="4p2(3P)5s" term1="2P°" term2="2P" J1="1/2" J2="1/2" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>4</biologicalmeaning> + <group>5</group> + <electronaffinity>-78</electronaffinity> + <electronegativity>2.18</electronegativity> + <meltingpoint>1090</meltingpoint> + <boilingpoint>876</boilingpoint> + <density>5.72</density> + <ionisationenergy> + <energy>9.81 </energy> + </ionisationenergy> + <radius> + <covalent>119</covalent> + <atomic>115</atomic> + <vdw>185</vdw> + <ionic charge="+5">46</ionic> + </radius> + <orbits>Ar 3d10 4s2 4p3</orbits> + <oxydation>(-3).+3.(+5)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+1.43947" halflife="" halflifeformat="seconds" weight="74.92159" neutron="42" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="2.97" ecpercentage="" ecdecay="" spin="2-" magmoment="-0.906" halflife="94752" halflifeformat="seconds" weight="75.92239" neutron="43" percentage="" /> + </isotopes> + <family>Metalloids</family> + <crystalstructure>rh</crystalstructure> + </element> + <element> + <number>34</number> + <name origin="Greek 'selena' for 'moon'">Selenium</name> + <symbol>Se</symbol> + <period>4</period> + <mass>78.96</mass> + <block>p</block> + <spectra> + <spectrum intensity="600" wavelength="1960.894" aki="2.13" energy1="0.00" energy2="50997.161" electronconfig1="4p4" electronconfig2="4p3(4S°)5s" term1="3P" term2="3S°" J1="2" J2="1" /> + <spectrum intensity="150" wavelength="1995.111" aki="0.0" energy1="22446.202" energy2="72568.72" electronconfig1="4p4" electronconfig2="4p3(2P°)5s" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="600" wavelength="2039.842" aki="0.98" energy1="1989.497" energy2="50997.161" electronconfig1="4p4" electronconfig2="4p3(4S°)5s" term1="3P" term2="3S°" J1="1" J2="1" /> + <spectrum intensity="400" wavelength="2062.779" aki="0.33" energy1="2534.36" energy2="50997.161" electronconfig1="4p4" electronconfig2="4p3(4S°)5s" term1="3P" term2="3S°" J1="0" J2="1" /> + <spectrum intensity="600" wavelength="2074.784" aki="0.017" energy1="0.00" energy2="48182.420" electronconfig1="4p4" electronconfig2="4p3(4S°)5s" term1="3P" term2="5S°" J1="2" J2="2" /> + <spectrum intensity="600" wavelength="2164.188" aki="0.0032" energy1="1989.497" energy2="48182.420" electronconfig1="4p4" electronconfig2="4p3(4S°)5s" term1="3P" term2="5S°" J1="1" J2="2" /> + <spectrum intensity="700" wavelength="2413.535" aki="0.0" energy1="9576.149" energy2="LP77" electronconfig1="4p4" electronconfig2="50997.161" term1="1D" term2="4p3(4S°)5s" J1="2" J2="3S°" /> + <spectrum intensity="600" wavelength="4730.78" aki="0.0" energy1="48182.420" energy2="RG34" electronconfig1="4p3(4S°)5s" electronconfig2="69314.635" term1="5S°" term2="4p3(4S°)6p" J1="2" J2="5P" /> + <spectrum intensity="1000" wavelength="10327.26" aki="0.0" energy1="50997.161" energy2="MV74" electronconfig1="4p3(4S°)5s" electronconfig2="60677.618" term1="3S°" term2="4p3(4S°)5p" J1="1" J2="3P" /> + <spectrum intensity="700" wavelength="10386.36" aki="0.0" energy1="50997.161" energy2="MV74" electronconfig1="4p3(4S°)5s" electronconfig2="60622.532" term1="3S°" term2="4p3(4S°)5p" J1="1" J2="3P" /> + <spectrum intensity="800" wavelength="21442.56" aki="0.0" energy1="60677.618" energy2="MV74" electronconfig1="4p3(4S°)5p" electronconfig2="65339.968" term1="3P" term2="4p3(4S°)4d" J1="2" J2="3D°" /> + </spectra> + <acidicbehaviour>3</acidicbehaviour> + <date scientist="J. J. Berzelius">1817</date> + <biologicalmeaning>2</biologicalmeaning> + <group>6</group> + <electronaffinity>-195</electronaffinity> + <electronegativity>2.55</electronegativity> + <meltingpoint>494</meltingpoint> + <boilingpoint>958</boilingpoint> + <density>4.82</density> + <ionisationenergy> + <energy>9.752 </energy> + </ionisationenergy> + <radius> + <covalent>116</covalent> + <atomic>115</atomic> + <vdw>190</vdw> + <ionic charge="-2">202</ionic> + </radius> + <orbits>Ar 3d10 4s2 4p4</orbits> + <oxydation>(-2).+4.(+6)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="73.922" neutron="40" percentage="0.9" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="75.919" neutron="42" percentage="9.5" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="+0.535506" halflife="" halflifeformat="seconds" weight="76.92" neutron="43" percentage="8.3" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="77.917" neutron="44" percentage="24" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="79.917" neutron="46" percentage="48" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="81.917" neutron="48" percentage="9.3" /> + </isotopes> + <family>Non-Metal</family> + <crystalstructure>hcp</crystalstructure> + </element> + <element> + <number>35</number> + <name origin="Greek 'bromos' for 'smells badly'">Bromine</name> + <symbol>Br</symbol> + <period>4</period> + <mass>79.904</mass> + <spectra> + <spectrum intensity="700" wavelength="1488.45" aki="2.0" energy1="0.00" energy2="67183.58" electronconfig1="4p5" electronconfig2="4p4(3P)5s" term1="2P°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="300" wavelength="1540.65" aki="2.2" energy1="0.00" energy2="64907.19" electronconfig1="4p5" electronconfig2="4p4(3P)5s" term1="2P°" term2="4P" J1="3/2" J2="3/2" /> + <spectrum intensity="400" wavelength="1574.84" aki="0.20" energy1="3685.24" energy2="67183.58" electronconfig1="4p5" electronconfig2="4p4(3P)5s" term1="2P°" term2="2P" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="1633.40" aki="0.23" energy1="3685.24" energy2="64907.19" electronconfig1="4p5" electronconfig2="4p4(3P)5s" term1="2P°" term2="4P" J1="1/2" J2="3/2" /> + <spectrum intensity="130" wavelength="7348.51" aki="0.12" energy1="64907.19" energy2="78511.60" electronconfig1="4p4(3P)5s" electronconfig2="4p4(3P)5p" term1="4P" term2="2D°" J1="3/2" J2="5/2" /> + <spectrum intensity="500" wavelength="7512.96" aki="0.12" energy1="63436.45" energy2="76743.08" electronconfig1="4p4(3P)5s" electronconfig2="4p4(3P)5p" term1="4P" term2="4D°" J1="5/2" J2="3/2" /> + <spectrum intensity="400" wavelength="7803.02" aki="0.053" energy1="66883.87" energy2="79695.89" electronconfig1="4p4(3P)5s" electronconfig2="4p4(3P)5p" term1="4P" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="400" wavelength="7938.68" aki="0.19" energy1="75890.33" energy2="88483.42" electronconfig1="4p4(1D)5s" electronconfig2="4p4(1D)5p" term1="2D°" term2="2D°" J1="5/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="8272.44" aki="0.0" energy1="63436.45" energy2="75521.50" electronconfig1="4p4(3P)5s" electronconfig2="4p4(3P)5p" term1="4P" term2="4D°" J1="5/2" J2="7/2" /> + <spectrum intensity="130" wavelength="8343.70" aki="0.22" energy1="66883.87" energy2="78865.72" electronconfig1="4p4(3P)5s" electronconfig2="4p4(3P)5p" term1="4P" term2="4D°" J1="1/2" J2="1/2" /> + <spectrum intensity="500" wavelength="8446.55" aki="0.12" energy1="64907.19" energy2="76743.08" electronconfig1="4p4(3P)5s" electronconfig2="4p4(3P)5p" term1="4P" term2="4D°" J1="3/2" J2="3/2" /> + </spectra> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <date scientist="A. J. Balard">1826</date> + <biologicalmeaning>5</biologicalmeaning> + <group>7</group> + <electronaffinity>-325</electronaffinity> + <electronegativity>2.96</electronegativity> + <meltingpoint>265.95</meltingpoint> + <boilingpoint>331.85</boilingpoint> + <density>3.14</density> + <ionisationenergy> + <energy>11.814 </energy> + </ionisationenergy> + <radius> + <covalent>114.5</covalent> + <atomic>115</atomic> + <vdw>185</vdw> + </radius> + <orbits>Ar 3d10 4s2 4p5</orbits> + <oxydation>-1.(+1.+5.+7)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+2.1064" halflife="" halflifeformat="seconds" weight="78.918" neutron="44" percentage="50.69" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+2.2706" halflife="" halflifeformat="seconds" weight="80.916" neutron="46" percentage="49.31" /> + </isotopes> + <family>Halogene</family> + <crystalstructure>or</crystalstructure> + </element> + <element> + <number>36</number> + <name origin="Greek 'kryptos' for 'hidden'">Krypton</name> + <symbol>Kr</symbol> + <period>4</period> + <mass>83.80</mass> + <spectra> + <spectrum intensity="300" wavelength="1164.8671" aki="3.16" energy1="0.000" energy2="85846.7051" electronconfig1="4p6" electronconfig2="4p5(2P°1/2)5s" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="1235.8378" aki="3.12" energy1="0.000" energy2="80916.7685" electronconfig1="4p6" electronconfig2="4p5(2P°3/2)5s" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="300" wavelength="5570.2894" aki="0.021" energy1="79971.7422" energy2="97919.1473" electronconfig1="4p5(2P°3/2)5s" electronconfig2="4p5(2P°1/2)5p" term1="2[3/2]°" term2="2[1/2]" J1="2" J2="1" /> + <spectrum intensity="500" wavelength="5870.9160" aki="0.018" energy1="80916.7685" energy2="97945.1669" electronconfig1="4p5(2P°3/2)5s" electronconfig2="4p5(2P°1/2)5p" term1="2[3/2]°" term2="2[3/2]" J1="1" J2="2" /> + <spectrum intensity="700" wavelength="8104.3655" aki="0.13" energy1="79971.7422" energy2="92307.3791" electronconfig1="4p5(2P°3/2)5s" electronconfig2="4p5(2P°3/2)5p" term1="2[3/2]°" term2="2[5/2]" J1="2" J2="2" /> + <spectrum intensity="1000" wavelength="8112.9012" aki="0.36" energy1="79971.7422" energy2="92294.4017" electronconfig1="4p5(2P°3/2)5s" electronconfig2="4p5(2P°3/2)5p" term1="2[3/2]°" term2="2[5/2]" J1="2" J2="3" /> + <spectrum intensity="500" wavelength="8190.0566" aki="0.11" energy1="80916.7685" energy2="93123.3414" electronconfig1="4p5(2P°3/2)5s" electronconfig2="4p5(2P°3/2)5p" term1="2[3/2]°" term2="2[3/2]" J1="1" J2="2" /> + <spectrum intensity="500" wavelength="8263.2426" aki="0.35" energy1="85846.7051" energy2="97945.1669" electronconfig1="4p5(2P°1/2)5s" electronconfig2="4p5(2P°1/2)5p" term1="2[1/2]°" term2="2[3/2]" J1="1" J2="2" /> + <spectrum intensity="800" wavelength="8298.1099" aki="0.32" energy1="80916.7685" energy2="92964.3948" electronconfig1="4p5(2P°3/2)5s" electronconfig2="4p5(2P°3/2)5p" term1="2[3/2]°" term2="2[3/2]" J1="1" J2="1" /> + <spectrum intensity="500" wavelength="8508.8728" aki="0.24" energy1="85846.7051" energy2="97595.9158" electronconfig1="4p5(2P°1/2)5s" electronconfig2="4p5(2P°1/2)5p" term1="2[1/2]°" term2="2[3/2]" J1="1" J2="1" /> + <spectrum intensity="1000" wavelength="8776.7505" aki="0.27" energy1="80916.7685" energy2="92307.3791" electronconfig1="4p5(2P°3/2)5s" electronconfig2="4p5(2P°3/2)5p" term1="2[3/2]°" term2="2[5/2]" J1="1" J2="2" /> + <spectrum intensity="400" wavelength="13634.220" aki="0.0" energy1="92294.4017" energy2="99626.883" electronconfig1="4p5(2P°3/2)5p" electronconfig2="4p5(2P°3/2)6s" term1="2[5/2]" term2="2[3/2]°" J1="3" J2="2" /> + <spectrum intensity="300" wavelength="14426.793" aki="0.0" energy1="92964.3948" energy2="99894.048" electronconfig1="4p5(2P°3/2)5p" electronconfig2="4p5(2P°3/2)6s" term1="2[3/2]" term2="2[3/2]°" J1="1" J2="1" /> + <spectrum intensity="400" wavelength="16890.441" aki="0.0" energy1="92307.3791" energy2="98226.268" electronconfig1="4p5(2P°3/2)5p" electronconfig2="4p5(2P°3/2)4d" term1="2[5/2]" term2="2[7/2]°" J1="2" J2="3" /> + <spectrum intensity="400" wavelength="18167.315" aki="0.0" energy1="92294.4017" energy2="97797.287" electronconfig1="4p5(2P°3/2)5p" electronconfig2="4p5(2P°3/2)4d" term1="2[5/2]" term2="2[7/2]°" J1="3" J2="4" /> + </spectra> + <block>p</block> + <acidicbehaviour>1</acidicbehaviour> + <date scientist="W. Ramsay. M. W. Travers">1898</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>39</electronaffinity> + <electronegativity></electronegativity> + <meltingpoint>116</meltingpoint> + <boilingpoint>120.85</boilingpoint> + <density>4.48</density> + <ionisationenergy> + <energy>13.999 </energy> + </ionisationenergy> + <radius> + <covalent>110</covalent> + <atomic>88</atomic> + <vdw>202</vdw> + </radius> + <orbits>Ar 3d10 4s2 4p6</orbits> + <oxydation>+2.(+4)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="77.92" neutron="42" percentage="0.35" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="79.916" neutron="44" percentage="2.01" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="81.913" neutron="46" percentage="11.5" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="-0.970669" halflife="" halflifeformat="seconds" weight="82.914" neutron="47" percentage="11.5" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="83.912" neutron="48" percentage="57.18" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="85.911" neutron="50" percentage="17.5" /> + </isotopes> + <family>Noblegas</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>37</number> + <name origin="Latin 'rubidus' for 'dark red'">Rubidium</name> + <symbol>Rb</symbol> + <period>5</period> + <mass>85.4678</mass> + <spectra> + <spectrum intensity="11" wavelength="4201.80" aki="0.018" energy1="0.000" energy2="23792.591" electronconfig1="5s" electronconfig2="6p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="6" wavelength="4215.53" aki="0.015" energy1="0.000" energy2="23715.081" electronconfig1="5s" electronconfig2="6p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="7800.27" aki="0.370" energy1="0.000" energy2="12816.545" electronconfig1="5s" electronconfig2="5p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="500" wavelength="7947.60" aki="0.340" energy1="0.000" energy2="12578.950" electronconfig1="5s" electronconfig2="5p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="11" wavelength="14752.41" aki="0.0" energy1="12578.950" energy2="19355.649" electronconfig1="5p" electronconfig2="4d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="9" wavelength="15288.43" aki="0.0" energy1="12816.545" energy2="19355.649" electronconfig1="5p" electronconfig2="4d" term1="2P°" term2="2D" J1="3/2" J2="3/2" /> + </spectra> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="Robert W. Bunsen. Gustav R. Kirchhoff">1861</date> + <biologicalmeaning>5</biologicalmeaning> + <group>1</group> + <electronaffinity>-47</electronaffinity> + <electronegativity>0.82</electronegativity> + <meltingpoint>312.63</meltingpoint> + <boilingpoint>961</boilingpoint> + <density>1.53</density> + <ionisationenergy> + <energy>4.177 </energy> + </ionisationenergy> + <radius> + <covalent>211</covalent> + <atomic>235</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 5s1</orbits> + <oxydation>+1</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2-" magmoment="+1.3530" halflife="" halflifeformat="seconds" weight="84.91179" neutron="48" percentage="72.17" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="99.99" betaminusdecay="1.774" ecpercentage="0.0052" ecdecay="" spin="2-" magmoment="-1.6920" halflife="1609715.4" halflifeformat="seconds" weight="85.91117" neutron="49" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="0.273" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+2.75124" halflife="47500000000" halflifeformat="years" weight="86.900919" neutron="50" percentage="27.83" /> + </isotopes> + <family>Alkali_Earth</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>38</number> + <name origin="Named after the mineral Strontianit">Strontium</name> + <symbol>Sr</symbol> + <spectra> + <spectrum intensity="1000" wavelength="4607.33" aki="2.01" energy1="0.000" energy2="21698.482" electronconfig1="5s2" electronconfig2="5s5p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="70" wavelength="4811.88" aki="0.0" energy1="14898.563" energy2="35674.668" electronconfig1="5s5p" electronconfig2="5p2" term1="3P°" term2="3P" J1="2" J2="2" /> + <spectrum intensity="50" wavelength="4872.49" aki="0.0" energy1="14504.351" energy2="35022.015" electronconfig1="5s5p" electronconfig2="5s5d" term1="3P°" term2="3D" J1="1" J2="2" /> + <spectrum intensity="120" wavelength="4962.26" aki="0.0" energy1="14898.563" energy2="35045.055" electronconfig1="5s5p" electronconfig2="5s5d" term1="3P°" term2="3D" J1="2" J2="3" /> + <spectrum intensity="20" wavelength="4967.94" aki="0.0" energy1="14898.563" energy2="35022.015" electronconfig1="5s5p" electronconfig2="5s5d" term1="3P°" term2="3D" J1="2" J2="2" /> + <spectrum intensity="70" wavelength="5256.90" aki="0.0" energy1="18319.267" energy2="37336.616" electronconfig1="5s4d" electronconfig2="4d5p" term1="3D" term2="3P°" J1="3" J2="2" /> + <spectrum intensity="110" wavelength="5480.84" aki="0.0" energy1="18319.267" energy2="36559.514" electronconfig1="5s4d" electronconfig2="4d5p" term1="3D" term2="3D°" J1="3" J2="3" /> + <spectrum intensity="140" wavelength="6408.47" aki="0.0" energy1="18319.267" energy2="33919.330" electronconfig1="5s4d" electronconfig2="4d5p" term1="3D" term2="3F°" J1="3" J2="4" /> + <spectrum intensity="80" wavelength="6504.00" aki="0.0" energy1="18218.795" energy2="33589.724" electronconfig1="5s4d" electronconfig2="4d5p" term1="3D" term2="3F°" J1="2" J2="3" /> + <spectrum intensity="30" wavelength="6791.05" aki="0.0" energy1="14317.520" energy2="29038.795" electronconfig1="5s5p" electronconfig2="5s6s" term1="3P°" term2="3S" J1="0" J2="1" /> + <spectrum intensity="70" wavelength="6878.38" aki="0.0" energy1="14504.351" energy2="29038.795" electronconfig1="5s5p" electronconfig2="5s6s" term1="3P°" term2="3S" J1="1" J2="1" /> + <spectrum intensity="20" wavelength="6892.59" aki="0.00048" energy1="0.000" energy2="14504.351" electronconfig1="5s2" electronconfig2="5s5p" term1="1S" term2="3P°" J1="0" J2="1" /> + <spectrum intensity="80" wavelength="7070.10" aki="0.0" energy1="14898.563" energy2="29038.795" electronconfig1="5s5p" electronconfig2="5s6s" term1="3P°" term2="3S" J1="2" J2="1" /> + </spectra> + <period>5</period> + <mass>87.62</mass> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="H. B. Davy">1790</date> + <biologicalmeaning>3</biologicalmeaning> + <group>2</group> + <electronaffinity></electronaffinity> + <electronegativity>0.95</electronegativity> + <meltingpoint>1042</meltingpoint> + <boilingpoint>1655</boilingpoint> + <density>2.63</density> + <ionisationenergy> + <energy>5.695</energy> + <energy>11.0</energy> + </ionisationenergy> + <radius> + <covalent>211</covalent> + <atomic>235</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 5s2</orbits> + <oxydation>+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="83.913" neutron="46" percentage="0.56" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100" ecdecay="1.08" spin="9/2+" magmoment="" halflife="5598720" halflifeformat="seconds" weight="84.91294" neutron="47" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="" halflifeformat="seconds" weight="85.909" neutron="48" percentage="9.86" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="-1.093" halflife="" halflifeformat="seconds" weight="86.909" neutron="49" percentage="7.0" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="" halflifeformat="seconds" weight="87.906" neutron="50" percentage="82.58" /> + </isotopes> + <family>Alkaline_Earth</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>39</number> + <name origin="Named after the small town of Ytterby near Stockholm in Sweden. Terbium. Ytterbium and Gadolinium are also named after this town.">Yttrium</name> + <symbol>Y</symbol> + <period>5</period> + <spectra> + <spectrum intensity="900" wavelength="4077.359" aki="1.1" energy1="0.000" energy2="24518.751" electronconfig1="4d5s2" electronconfig2="4d(3D)5s5p" term1="2D" term2="2F°" J1="3/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="4102.364" aki="1.3" energy1="530.351" energy2="24899.632" electronconfig1="4d5s2" electronconfig2="4d(3D)5s5p" term1="2D" term2="2F°" J1="5/2" J2="7/2" /> + <spectrum intensity="900" wavelength="4128.299" aki="1.6" energy1="530.351" energy2="24746.573" electronconfig1="4d5s2" electronconfig2="4d(1D)5s5p" term1="2D" term2="2D°" J1="5/2" J2="5/2" /> + <spectrum intensity="800" wavelength="4142.841" aki="1.6" energy1="0.000" energy2="24131.250" electronconfig1="4d5s2" electronconfig2="4d(1D)5s5p" term1="2D" term2="2D°" J1="3/2" J2="3/2" /> + <spectrum intensity="600" wavelength="17422.838" aki="0.0" energy1="11078.614" energy2="16816.641" electronconfig1="4d2(3F)5s" electronconfig2="4d(3D)5s5p" term1="4F" term2="4D°" J1="5/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="17903.209" aki="0.0" energy1="11532.096" energy2="17116.156" electronconfig1="4d2(3F)5s" electronconfig2="4d(3D)5s5p" term1="4F" term2="4D°" J1="9/2" J2="7/2" /> + <spectrum intensity="1000" wavelength="18049.810" aki="0.0" energy1="11277.928" energy2="16816.641" electronconfig1="4d2(3F)5s" electronconfig2="4d(3D)5s5p" term1="4F" term2="4D°" J1="7/2" J2="5/2" /> + <spectrum intensity="800" wavelength="21260.444" aki="0.0" energy1="11532.096" energy2="16234.382" electronconfig1="4d2(3F)5s" electronconfig2="4d(3D)5s5p" term1="4F" term2="4F°" J1="9/2" J2="9/2" /> + <spectrum intensity="700" wavelength="22543.828" aki="0.0" energy1="11277.928" energy2="15712.522" electronconfig1="4d2(3F)5s" electronconfig2="4d(3D)5s5p" term1="4F" term2="4F°" J1="7/2" J2="7/2" /> + <spectrum intensity="500" wavelength="23990.450" aki="0.0" energy1="11078.614" energy2="15245.803" electronconfig1="4d2(3F)5s" electronconfig2="4d(3D)5s5p" term1="4F" term2="4F°" J1="5/2" J2="5/2" /> + </spectra> + <mass>88.90585</mass> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">1794</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <electronaffinity>-30</electronaffinity> + <electronegativity>1.22</electronegativity> + <meltingpoint>1795</meltingpoint> + <boilingpoint>3611</boilingpoint> + <density>4.47</density> + <ionisationenergy> + <energy>6.38 </energy> + </ionisationenergy> + <radius> + <covalent>162</covalent> + <atomic>180</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 4d1 5s2</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="-0.1374153" halflife="" halflifeformat="seconds" weight="88.90585" neutron="50" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="2.283" ecpercentage="" ecdecay="" spin="2-" magmoment="-1.630" halflife="230400" halflifeformat="seconds" weight="89.90715" neutron="51" percentage="" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>40</number> + <name origin="Named after the mineral zircon">Zirconium</name> + <symbol>Zr</symbol> + <period>5</period> + <mass>91.224</mass> + <block>d</block> + <spectra> + <spectrum intensity="600" wavelength="3519.604" aki="0.0" energy1="0.00" energy2="28404.26" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2F)5p" J1="2" J2="x3G°" /> + <spectrum intensity="500" wavelength="3547.683" aki="0.0" energy1="570.41" energy2="28749.80" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2F)5p" J1="3" J2="x3G°" /> + <spectrum intensity="300" wavelength="3575.790" aki="0.53" energy1="570.41" energy2="28528.36" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2F)5p" J1="3" J2="w3F°" /> + <spectrum intensity="1000" wavelength="3601.191" aki="1.33" energy1="1240.84" energy2="29001.65" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2F)5p" J1="4" J2="x3G°" /> + <spectrum intensity="300" wavelength="3663.648" aki="0.57" energy1="1240.84" energy2="28528.36" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2F)5p" J1="4" J2="w3F°" /> + <spectrum intensity="600" wavelength="3835.962" aki="0.0" energy1="0.00" energy2="26061.70" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2D)5p" J1="2" J2="x3F°" /> + <spectrum intensity="800" wavelength="3863.872" aki="0.0" energy1="570.41" energy2="26443.88" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2D)5p" J1="3" J2="x3F°" /> + <spectrum intensity="800" wavelength="3890.316" aki="0.0" energy1="1240.84" energy2="26938.42" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2D)5p" J1="4" J2="x3F°" /> + <spectrum intensity="600" wavelength="3891.380" aki="0.39" energy1="1240.84" energy2="26931.35" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="2F)5p" J1="4" J2="z5G°" /> + <spectrum intensity="600" wavelength="4072.698" aki="1.19" energy1="5540.54" energy2="4" electronconfig1="4d3(b" electronconfig2="30087.33" term1="4F)5s" term2="4d3(b" J1="a5F" J2="4F)5p" /> + <spectrum intensity="600" wavelength="4081.209" aki="0.0" energy1="5888.93" energy2="5" electronconfig1="4d3(b" electronconfig2="30384.50" term1="4F)5s" term2="4d3(b" J1="a5F" J2="4F)5p" /> + <spectrum intensity="600" wavelength="4227.750" aki="0.0" energy1="5888.93" energy2="5" electronconfig1="4d3(b" electronconfig2="29535.48" term1="4F)5s" term2="4d3(b" J1="a5F" J2="4F)5p" /> + <spectrum intensity="600" wavelength="4239.309" aki="0.0" energy1="5540.54" energy2="4" electronconfig1="4d3(b" electronconfig2="29122.71" term1="4F)5s" term2="4d3(b" J1="a5F" J2="4F)5p" /> + <spectrum intensity="700" wavelength="4687.799" aki="0.85" energy1="5888.93" energy2="5" electronconfig1="4d3(b" electronconfig2="27214.89" term1="4F)5s" term2="4d3(b" J1="a5F" J2="4F)5p" /> + <spectrum intensity="500" wavelength="4710.074" aki="0.64" energy1="5540.54" energy2="4" electronconfig1="4d3(b" electronconfig2="26765.66" term1="4F)5s" term2="4d3(b" J1="a5F" J2="4F)5p" /> + <spectrum intensity="200" wavelength="6127.457" aki="0.017" energy1="1240.84" energy2="17556.26" electronconfig1="4d25s2" electronconfig2="4d25s(a" term1="a3F" term2="4F)5p" J1="4" J2="z3F°" /> + <spectrum intensity="150" wavelength="7097.727" aki="0.051" energy1="5540.54" energy2="4" electronconfig1="4d3(b" electronconfig2="19625.58" term1="4F)5s" term2="4d25s(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="150" wavelength="7169.092" aki="0.0" energy1="5888.93" energy2="5" electronconfig1="4d3(b" electronconfig2="19833.78" term1="4F)5s" term2="4d25s(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="250" wavelength="8070.099" aki="0.0" energy1="5888.93" energy2="5" electronconfig1="4d3(b" electronconfig2="18276.92" term1="4F)5s" term2="4d25s(a" J1="a5F" J2="4F)5p" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="">1789</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity>-41</electronaffinity> + <electronegativity>1.33</electronegativity> + <meltingpoint>2128</meltingpoint> + <boilingpoint>4682</boilingpoint> + <density>6.51</density> + <ionisationenergy> + <energy>6.84 </energy> + </ionisationenergy> + <radius> + <covalent>148</covalent> + <atomic>155</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 4d2 5s2</orbits> + <oxydation>+4</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="89.904" neutron="50" percentage="51.5" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-1.30362" halflife="" halflifeformat="seconds" weight="90.905" neutron="51" percentage="11.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="91.905" neutron="52" percentage="17.1" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.09" ecpercentage="" ecdecay="" spin="5/2+" magmoment="" halflife="1530000" halflifeformat="years" weight="92.90647" neutron="53" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="93.906" neutron="54" percentage="17.4" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.121" ecpercentage="" ecdecay="" spin="5/2+" magmoment="" halflife="5531328" halflifeformat="seconds" weight="94.90804" neutron="55" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="95.908" neutron="56" percentage="2.8" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>41</number> + <name origin="Named after Niobe. the daughter of the Greek god Tantalus">Niobium</name> + <symbol>Nb</symbol> + <period>5</period> + <spectra> + <spectrum intensity="80" wavelength="3341.97" aki="0.0" energy1="1142.79" energy2="31056.60" electronconfig1="4d35s2" electronconfig2="4d35s(a" term1="a4F" term2="5F)5p" J1="3/2" J2="x4G°" /> + <spectrum intensity="80" wavelength="3343.71" aki="0.0" energy1="1586.90" energy2="31485.20" electronconfig1="4d35s2" electronconfig2="4d35s(a" term1="a4F" term2="5F)5p" J1="5/2" J2="x4G°" /> + <spectrum intensity="110" wavelength="3349.06" aki="0.0" energy1="2154.11" energy2="32004.63" electronconfig1="4d35s2" electronconfig2="4d35s(a" term1="a4F" term2="5F)5p" J1="7/2" J2="x4G°" /> + <spectrum intensity="110" wavelength="3358.42" aki="0.0" energy1="2805.36" energy2="32572.72" electronconfig1="4d35s2" electronconfig2="4d35s(a" term1="a4F" term2="5F)5p" J1="9/2" J2="x4G°" /> + <spectrum intensity="120" wavelength="3535.30" aki="0.0" energy1="695.25" energy2="7/2" electronconfig1="4d4(a" electronconfig2="28973.12" term1="5D)5s" term2="4d35s(a" J1="a6D" J2="5P)5p" /> + <spectrum intensity="90" wavelength="3575.85" aki="0.0" energy1="695.25" energy2="7/2" electronconfig1="4d4(a" electronconfig2="28652.66" term1="5D)5s" term2="4d35s(a" J1="a6D" J2="5P)5p" /> + <spectrum intensity="300" wavelength="3580.27" aki="0.0" energy1="1050.26" energy2="9/2" electronconfig1="4d4(a" electronconfig2="28973.12" term1="5D)5s" term2="4d35s(a" J1="a6D" J2="5P)5p" /> + <spectrum intensity="150" wavelength="3739.80" aki="0.59" energy1="695.25" energy2="7/2" electronconfig1="4d4(a" electronconfig2="27427.07" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + <spectrum intensity="1000" wavelength="4058.94" aki="1.28" energy1="1050.26" energy2="9/2" electronconfig1="4d4(a" electronconfig2="25680.36" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + <spectrum intensity="800" wavelength="4079.73" aki="0.99" energy1="695.25" energy2="7/2" electronconfig1="4d4(a" electronconfig2="25199.81" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + <spectrum intensity="400" wavelength="4100.92" aki="0.76" energy1="391.99" energy2="5/2" electronconfig1="4d4(a" electronconfig2="24769.91" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + <spectrum intensity="300" wavelength="4123.81" aki="0.58" energy1="154.19" energy2="3/2" electronconfig1="4d4(a" electronconfig2="24396.80" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + <spectrum intensity="300" wavelength="4152.58" aki="0.38" energy1="695.25" energy2="7/2" electronconfig1="4d4(a" electronconfig2="24769.91" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + <spectrum intensity="300" wavelength="4163.66" aki="0.65" energy1="154.19" energy2="3/2" electronconfig1="4d4(a" electronconfig2="24164.79" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + <spectrum intensity="250" wavelength="4164.66" aki="0.50" energy1="391.99" energy2="5/2" electronconfig1="4d4(a" electronconfig2="24396.80" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + <spectrum intensity="200" wavelength="4168.13" aki="0.91" energy1="0.00" energy2="1/2" electronconfig1="4d4(a" electronconfig2="23984.87" term1="5D)5s" term2="4d4(a" J1="a6D" J2="5D)5p" /> + </spectra> + <mass>92.90638</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="Charles Hatchett">1801</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <electronaffinity>-86</electronaffinity> + <electronegativity>1.6</electronegativity> + <meltingpoint>2742</meltingpoint> + <boilingpoint>5015</boilingpoint> + <density>8.58</density> + <ionisationenergy> + <energy>6.88 </energy> + </ionisationenergy> + <radius> + <covalent>137</covalent> + <atomic>145</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 4d4 5s1</orbits> + <oxydation>+3.+5</oxydation> + <family>Transition</family> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="+6.1705" halflife="" halflifeformat="seconds" weight="92.90638" neutron="52" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.925" ecpercentage="" ecdecay="" spin="9/2+" magmoment="+6.123" halflife="3036960" halflifeformat="seconds" weight="94.90683" neutron="54" percentage="" /> + </isotopes> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>42</number> + <name origin="This name has Greek roots. It means 'like Platinum' - it was difficult to distinguish Molybdenum from Platinum.">Molybdenum</name> + <symbol>Mo</symbol> + <period>5</period> + <mass>95.94</mass> + <block>d</block> + <spectra> + <spectrum intensity="500" wavelength="3132.594" aki="1.79" energy1="0.000" energy2="31913.171" electronconfig1="4d5(6S)5s" electronconfig2="4d45s(6D)5p" term1="a7S" term2="y7P°" J1="3" J2="4" /> + <spectrum intensity="200" wavelength="3158.167" aki="0.463" energy1="0.000" energy2="31654.786" electronconfig1="4d5(6S)5s" electronconfig2="4d45s(6D)5p" term1="a7S" term2="z7D°" J1="3" J2="3" /> + <spectrum intensity="300" wavelength="3170.344" aki="1.37" energy1="0.000" energy2="31533.206" electronconfig1="4d5(6S)5s" electronconfig2="4d45s(6D)5p" term1="a7S" term2="y7P°" J1="3" J2="3" /> + <spectrum intensity="250" wavelength="3193.979" aki="1.53" energy1="0.000" energy2="31299.876" electronconfig1="4d5(6S)5s" electronconfig2="4d45s(6D)5p" term1="a7S" term2="y7P°" J1="3" J2="2" /> + <spectrum intensity="100" wavelength="3208.838" aki="0.277" energy1="0.000" energy2="31154.935" electronconfig1="4d5(6S)5s" electronconfig2="4d45s(6D)5p" term1="a7S" term2="z7D°" J1="3" J2="2" /> + <spectrum intensity="110" wavelength="3447.124" aki="0.875" energy1="12346.280" energy2="41347.664" electronconfig1="4d45s2" electronconfig2="4d5(4G)5p" term1="a5D" term2="y5F°" J1="4" J2="5" /> + <spectrum intensity="1000" wavelength="3798.252" aki="0.690" energy1="0.000" energy2="26320.420" electronconfig1="4d5(6S)5s" electronconfig2="4d5(6S)5p" term1="a7S" term2="z7P°" J1="3" J2="4" /> + <spectrum intensity="1000" wavelength="3864.104" aki="0.624" energy1="0.000" energy2="25871.887" electronconfig1="4d5(6S)5s" electronconfig2="4d5(6S)5p" term1="a7S" term2="z7P°" J1="3" J2="3" /> + <spectrum intensity="700" wavelength="3902.953" aki="0.617" energy1="0.000" energy2="25614.367" electronconfig1="4d5(6S)5s" electronconfig2="4d5(6S)5p" term1="a7S" term2="z7P°" J1="3" J2="2" /> + <spectrum intensity="80" wavelength="4069.882" aki="0.325" energy1="16783.856" energy2="41347.664" electronconfig1="4d5(4G)5s" electronconfig2="4d5(4G)5p" term1="a5G" term2="y5F°" J1="6" J2="5" /> + <spectrum intensity="90" wavelength="4188.324" aki="0.332" energy1="16784.522" energy2="40653.701" electronconfig1="4d5(4G)5s" electronconfig2="4d5(4G)5p" term1="a5G" term2="z5H°" J1="5" J2="6" /> + <spectrum intensity="90" wavelength="4411.695" aki="0.263" energy1="16784.522" energy2="39445.182" electronconfig1="4d5(4G)5s" electronconfig2="4d5(4G)5p" term1="a5G" term2="z5G°" J1="5" J2="5" /> + <spectrum intensity="250" wavelength="5506.494" aki="0.361" energy1="10768.332" energy2="28923.668" electronconfig1="4d5(6S)5s" electronconfig2="4d5(6S)5p" term1="a5S" term2="z5P°" J1="2" J2="3" /> + <spectrum intensity="200" wavelength="5533.031" aki="0.372" energy1="10768.332" energy2="28836.592" electronconfig1="4d5(6S)5s" electronconfig2="4d5(6S)5p" term1="a5S" term2="z5P°" J1="2" J2="2" /> + <spectrum intensity="90" wavelength="5570.444" aki="0.330" energy1="10768.332" energy2="28715.242" electronconfig1="4d5(6S)5s" electronconfig2="4d5(6S)5p" term1="a5S" term2="z5P°" J1="2" J2="1" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="C. W. Scheele">1778</date> + <biologicalmeaning>1</biologicalmeaning> + <group>6</group> + <electronaffinity>-72</electronaffinity> + <electronegativity>2.16</electronegativity> + <meltingpoint>2896</meltingpoint> + <boilingpoint>4912</boilingpoint> + <density>10.28</density> + <ionisationenergy> + <energy>7.099</energy> + </ionisationenergy> + <radius> + <covalent>145</covalent> + <atomic>145</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 4d5 5s1</orbits> + <oxydation>(+2.+3.+4.+5).+6</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="91.90681" neutron="50" percentage="15.9" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="" spin="5/2+" magmoment="" halflife="3500" halflifeformat="years" weight="92.90681" neutron="51" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="93.905" neutron="52" percentage="9.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-0.9133" halflife="" halflifeformat="seconds" weight="94.906" neutron="53" percentage="16.5" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="95.905" neutron="54" percentage="15.7" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-0.9133" halflife="" halflifeformat="seconds" weight="96.905" neutron="55" percentage="9.4" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="97.906" neutron="56" percentage="23.7" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.357" ecpercentage="" ecdecay="" spin="1/2+" magmoment="" halflife="5762016" halflifeformat="seconds" weight="98.90771" neutron="57" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="99.908" neutron="58" percentage="9.6" /> + </isotopes> + <family>Transition</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>43</number> + <name origin="Greek 'technetos' for artificial">Technetium</name> + <symbol>Tc</symbol> + <period>5</period> + <mass>98.9063</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="C. Perrier. E. G. Segre">1937</date> + <biologicalmeaning>0</biologicalmeaning> + <spectra> + <spectrum intensity="300" wavelength="3173.30" aki="0.86" energy1="0.00" energy2="31503.93" electronconfig1="4d55s2" electronconfig2="4d6(5D)5p" term1="a6S" term2="y4P°" J1="5/2" J2="3/2" /> + <spectrum intensity="200" wavelength="3182.37" aki="0.39" energy1="0.00" energy2="31414.05" electronconfig1="4d55s2" electronconfig2="4d6(5D)5p" term1="a6S" term2="y4P°" J1="5/2" J2="7/2" /> + <spectrum intensity="200" wavelength="3183.11" aki="0.56" energy1="0.00" energy2="31406.74" electronconfig1="4d55s2" electronconfig2="4d6(5D)5p" term1="a6S" term2="y4P°" J1="5/2" J2="5/2" /> + <spectrum intensity="500" wavelength="3466.28" aki="1.22" energy1="2572.89" energy2="31414.05" electronconfig1="4d6(5D)5s" electronconfig2="4d6(5D)5p" term1="a6D" term2="y4P°" J1="9/2" J2="7/2" /> + <spectrum intensity="1000" wavelength="3636.07" aki="1.57" energy1="2572.89" energy2="30067.29" electronconfig1="4d6(5D)5s" electronconfig2="4d6(5D)5p" term1="a6D" term2="z6F°" J1="9/2" J2="11/2" /> + <spectrum intensity="800" wavelength="3718.86" aki="1.05" energy1="3250.91" energy2="30133.26" electronconfig1="4d6(5D)5s" electronconfig2="4d6(5D)5p" term1="a6D" term2="z6F°" J1="7/2" J2="9/2" /> + <spectrum intensity="500" wavelength="3984.97" aki="0.42" energy1="2572.89" energy2="27660.10" electronconfig1="4d6(5D)5s" electronconfig2="4d6(5D)5p" term1="a6D" term2="z6D°" J1="9/2" J2="7/2" /> + <spectrum intensity="1000" wavelength="4031.63" aki="1.01" energy1="2572.89" energy2="27369.79" electronconfig1="4d6(5D)5s" electronconfig2="4d6(5D)5p" term1="a6D" term2="z6D°" J1="9/2" J2="9/2" /> + <spectrum intensity="700" wavelength="4095.67" aki="0.49" energy1="3250.91" energy2="27660.10" electronconfig1="4d6(5D)5s" electronconfig2="4d6(5D)5p" term1="a6D" term2="z6D°" J1="7/2" J2="7/2" /> + <spectrum intensity="500" wavelength="4238.19" aki="0.38" energy1="0.00" energy2="23588.40" electronconfig1="4d55s2" electronconfig2="4d55s(7S)5s" term1="a6S" term2="z6P°" J1="5/2" J2="3/2" /> + <spectrum intensity="800" wavelength="4262.27" aki="0.40" energy1="0.00" energy2="23455.21" electronconfig1="4d55s2" electronconfig2="4d55s(7S)5s" term1="a6S" term2="z6P°" J1="5/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="4297.06" aki="0.42" energy1="0.00" energy2="23265.32" electronconfig1="4d55s2" electronconfig2="4d55s(7S)5s" term1="a6S" term2="z6P°" J1="5/2" J2="7/2" /> + <spectrum intensity="800" wavelength="4853.59" aki="0.49" energy1="10516.53" energy2="31114.08" electronconfig1="4d6(5D)5s" electronconfig2="4d6(5D)5p" term1="a4D" term2="z4F°" J1="7/2" J2="9/2" /> + </spectra> + <group>7</group> + <electronaffinity>-53</electronaffinity> + <electronegativity>1.9</electronegativity> + <meltingpoint>2477</meltingpoint> + <boilingpoint>4538</boilingpoint> + <density>11.49</density> + <ionisationenergy> + <energy>7.28 </energy> + </ionisationenergy> + <radius> + <covalent>156</covalent> + <atomic>135</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 4d6 5s1</orbits> + <oxydation>+7</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.32" spin="9/2+" magmoment="" halflife="2600000" halflifeformat="years" weight="96.90636" neutron="54" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.293" ecpercentage="" ecdecay="" spin="9/2+" magmoment="+5.6847" halflife="211100" halflifeformat="years" weight="98.90625" neutron="56" percentage="" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>44</number> + <name origin="Ruthenia is the old name of Russia">Ruthenium</name> + <symbol>Ru</symbol> + <period>5</period> + <mass>101.07</mass> + <spectra> + <spectrum intensity="600" wavelength="3436.737" aki="0.728" energy1="1190.64" energy2="4" electronconfig1="4d7(a" electronconfig2="30279.68" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="800" wavelength="3498.944" aki="0.861" energy1="0.00" energy2="5" electronconfig1="4d7(a" electronconfig2="28571.89" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="600" wavelength="3589.220" aki="0.911" energy1="3105.49" energy2="1" electronconfig1="4d7(a" electronconfig2="30958.80" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="600" wavelength="3593.029" aki="0.817" energy1="2713.24" energy2="2" electronconfig1="4d7(a" electronconfig2="30537.06" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="600" wavelength="3596.185" aki="0.420" energy1="2091.54" energy2="3" electronconfig1="4d7(a" electronconfig2="29890.91" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="800" wavelength="3726.926" aki="0.753" energy1="1190.64" energy2="4" electronconfig1="4d7(a" electronconfig2="28014.79" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="1000" wavelength="3728.026" aki="0.820" energy1="0.00" energy2="5" electronconfig1="4d7(a" electronconfig2="26816.23" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="600" wavelength="3730.432" aki="0.706" energy1="2091.54" energy2="3" electronconfig1="4d7(a" electronconfig2="28890.47" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="700" wavelength="3798.899" aki="0.598" energy1="1190.64" energy2="4" electronconfig1="4d7(a" electronconfig2="27506.59" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="700" wavelength="3799.353" aki="0.533" energy1="0.00" energy2="5" electronconfig1="4d7(a" electronconfig2="26312.83" term1="4F)5s" term2="4d7(a" J1="a5F" J2="4F)5p" /> + <spectrum intensity="700" wavelength="4199.892" aki="0.399" energy1="6545.03" energy2="4" electronconfig1="4d7(a" electronconfig2="30348.45" term1="4F)5s" term2="4d7(a" J1="a3F" J2="4F)5p" /> + </spectra> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="K. Klaus">1844</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>-101</electronaffinity> + <electronegativity>2.2</electronegativity> + <meltingpoint>2610</meltingpoint> + <boilingpoint>4425</boilingpoint> + <density>12.45</density> + <ionisationenergy> + <energy>7.37 </energy> + </ionisationenergy> + <radius> + <covalent>126</covalent> + <atomic>130</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 4d7 5s1</orbits> + <oxydation>+3.+4.(+8)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="95.908" neutron="52" percentage="5.68" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="1.2" spin="5/2" magmoment="+0.687" halflife="250560" halflifeformat="seconds" weight="96.90755" neutron="53" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="97.906" neutron="54" percentage="2.22" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+0.6413" halflife="" halflifeformat="seconds" weight="98.906" neutron="55" percentage="12.91" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="99.903" neutron="56" percentage="12.7" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-0.7188" halflife="" halflifeformat="seconds" weight="100.904" neutron="57" percentage="16.98" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="101.904" neutron="58" percentage="31.34" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.767" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.67" halflife="3392064" halflifeformat="seconds" weight="102.90632" neutron="59" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="103.906" neutron="60" percentage="18.27" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>45</number> + <name origin="Greek 'rhodeos' means 'red like a rose'">Rhodium</name> + <symbol>Rh</symbol> + <period>5</period> + <mass>102.90550</mass> + <spectra> + <spectrum intensity="400" wavelength="3323.09" aki="0.63" energy1="1529.97" energy2="31613.78" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z2G°" J1="7/2" J2="9/2" /> + <spectrum intensity="600" wavelength="3396.82" aki="0.65" energy1="0.00" energy2="29430.86" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z4F°" J1="9/2" J2="9/2" /> + <spectrum intensity="900" wavelength="3434.89" aki="0.0" energy1="0.00" energy2="29104.71" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z4G°" J1="9/2" J2="11/2" /> + <spectrum intensity="600" wavelength="3502.52" aki="0.43" energy1="0.00" energy2="28542.69" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z4G°" J1="9/2" J2="9/2" /> + <spectrum intensity="300" wavelength="3507.32" aki="0.34" energy1="2598.03" energy2="31101.75" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z4G°" J1="5/2" J2="7/2" /> + <spectrum intensity="900" wavelength="3528.02" aki="0.85" energy1="1529.97" energy2="29866.34" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z4F°" J1="7/2" J2="7/2" /> + <spectrum intensity="900" wavelength="3657.99" aki="0.88" energy1="1529.97" energy2="28859.64" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z4D°" J1="7/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="3692.36" aki="0.91" energy1="0.00" energy2="27075.26" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z4D°" J1="9/2" J2="7/2" /> + <spectrum intensity="800" wavelength="3700.91" aki="0.39" energy1="1529.97" energy2="28542.69" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a4F" term2="z4G°" J1="7/2" J2="9/2" /> + <spectrum intensity="400" wavelength="4374.80" aki="0.164" energy1="5690.97" energy2="28542.69" electronconfig1="4d8(3F)5s" electronconfig2="4d8(3F)5p" term1="a2F" term2="z4G°" J1="7/2" J2="9/2" /> + </spectra> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="W. Wollaston">1803</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>-110</electronaffinity> + <electronegativity>2.28</electronegativity> + <meltingpoint>2236</meltingpoint> + <boilingpoint>3970</boilingpoint> + <density>12.41</density> + <ionisationenergy> + <energy>7.46 </energy> + </ionisationenergy> + <radius> + <covalent>135</covalent> + <atomic>134.5</atomic> + <vdw></vdw> + </radius> + <orbits>Kr 4d8 5s1</orbits> + <oxydation>+1.(+2).+3.(+4)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="-0.08840" halflife="" halflifeformat="seconds" weight="102.9055" neutron="58" percentage="100" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>46</number> + <name origin="Named after the planetoid Pallas">Palladium</name> + <symbol>Pd</symbol> + <period>5</period> + <mass>106.42</mass> + <spectra> + <spectrum intensity="300" wavelength="2447.9058" aki="0.111" energy1="0.000" energy2="40838.874" electronconfig1="4d10" electronconfig2="4d9(2D5/2)5p" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="250" wavelength="2476.4127" aki="0.188" energy1="0.000" energy2="40368.796" electronconfig1="4d10" electronconfig2="4d9(2D5/2)5p" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="400" wavelength="2763.0899" aki="0.169" energy1="0.000" energy2="36180.677" electronconfig1="4d10" electronconfig2="4d9(2D5/2)5p" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="500" wavelength="3242.6983" aki="0.77" energy1="6564.148" energy2="37393.762" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[5/2]" term2="2[5/2]°" J1="3" J2="3" /> + <spectrum intensity="1000" wavelength="3404.5764" aki="1.34" energy1="6564.148" energy2="35927.948" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[5/2]" term2="2[7/2]°" J1="3" J2="4" /> + <spectrum intensity="500" wavelength="3421.2214" aki="0.0" energy1="7755.025" energy2="36975.973" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[5/2]" term2="2[5/2]°" J1="2" J2="2" /> + <spectrum intensity="300" wavelength="3460.7381" aki="0.30" energy1="6564.148" energy2="35451.443" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[5/2]" term2="2[7/2]°" J1="3" J2="3" /> + <spectrum intensity="400" wavelength="3481.1516" aki="0.0" energy1="10093.992" energy2="38811.896" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[3/2]" term2="2[5/2]°" J1="1" J2="2" /> + <spectrum intensity="500" wavelength="3516.9438" aki="1.03" energy1="7755.025" energy2="36180.677" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[5/2]" term2="2[3/2]°" J1="2" J2="1" /> + <spectrum intensity="500" wavelength="3553.0803" aki="0.0" energy1="11721.809" energy2="39858.361" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[3/2]" term2="2[5/2]°" J1="2" J2="3" /> + <spectrum intensity="800" wavelength="3609.5547" aki="0.82" energy1="7755.025" energy2="35451.443" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[5/2]" term2="2[7/2]°" J1="2" J2="3" /> + <spectrum intensity="800" wavelength="3634.6884" aki="0.0" energy1="6564.148" energy2="34068.977" electronconfig1="4d9(2D5/2)5s" electronconfig2="4d9(2D5/2)5p" term1="2[5/2]" term2="2[3/2]°" J1="3" J2="2" /> + </spectra> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">1803</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>-54</electronaffinity> + <electronegativity>2.20</electronegativity> + <meltingpoint>1825</meltingpoint> + <boilingpoint>3240</boilingpoint> + <density>12.02</density> + <ionisationenergy> + <energy>8.34 </energy> + </ionisationenergy> + <radius> + <covalent>131</covalent> + <atomic>140</atomic> + <vdw>163</vdw> + </radius> + <orbits>Kr 4d10</orbits> + <oxydation>+2.+4</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="101.905" neutron="56" percentage="0.8" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.56" spin="5/2+" magmoment="" halflife="1468022.4" halflifeformat="seconds" weight="102.90610" neutron="57" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="103.904" neutron="58" percentage="9.3" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-0.642" halflife="" halflifeformat="seconds" weight="104.905" neutron="59" percentage="22.6" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="105.903" neutron="60" percentage="27.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.035" ecpercentage="" ecdecay="" spin="5/2+" magmoment="" halflife="6500000" halflifeformat="years" weight="106.90513" neutron="61" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="107.904" neutron="62" percentage="26.08" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.116" ecpercentage="" ecdecay="" spin="5/2+" magmoment="" halflife="49320" halflifeformat="seconds" weight="108.90595" neutron="63" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="109.904" neutron="64" percentage="13.5" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>47</number> + <name origin="Latin 'argentum' for silver">Silver</name> + <symbol>Ag</symbol> + <period>5</period> + <mass>107.8682</mass> + <spectra> + <spectrum intensity="1000" wavelength="3280.680" aki="1.47" energy1="0.000" energy2="30472.703" electronconfig1="4d10(1S)5s" electronconfig2="4d10(1S)5p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="500" wavelength="3382.887" aki="1.35" energy1="0.000" energy2="29552.061" electronconfig1="4d10(1S)5s" electronconfig2="4d10(1S)5p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="90" wavelength="5209.078" aki="0.75" energy1="29552.061" energy2="48743.969" electronconfig1="4d10(1S)5p" electronconfig2="4d10(1S)5d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="90" wavelength="5465.497" aki="0.86" energy1="30472.703" energy2="48764.219" electronconfig1="4d10(1S)5p" electronconfig2="4d10(1S)5d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="30" wavelength="7687.772" aki="0.0" energy1="29552.061" energy2="42556.152" electronconfig1="4d10(1S)5p" electronconfig2="4d10(1S)6s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="50" wavelength="8273.509" aki="0.0" energy1="30472.703" energy2="42556.152" electronconfig1="4d10(1S)5p" electronconfig2="4d10(1S)6s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + </spectra> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>0</biologicalmeaning> + <group>1</group> + <electronaffinity>-126</electronaffinity> + <electronegativity>1.93</electronegativity> + <meltingpoint>1235.1</meltingpoint> + <boilingpoint>2436</boilingpoint> + <density>10.49</density> + <ionisationenergy> + <energy>7.576 </energy> + </ionisationenergy> + <radius> + <covalent>153</covalent> + <atomic>160</atomic> + <vdw>172</vdw> + </radius> + <orbits>Kr 4d10 5s1</orbits> + <oxydation>+1.(+2.+3)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="-0.113570" halflife="" halflifeformat="seconds" weight="106.905" neutron="60" percentage="51.9" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="-0.1306905" halflife="" halflifeformat="seconds" weight="108.90476" neutron="62" percentage="48.1" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>48</number> + <name origin="Greek 'kadmia' ('Galmei' = Zinc carbonate)">Cadmium</name> + <symbol>Cd</symbol> + <period>5</period> + <mass>112.411</mass> + <block>d</block> + <spectra> + <spectrum intensity="800" wavelength="2288.022" aki="5.3" energy1="0.000" energy2="43692.384" electronconfig1="5s2" electronconfig2="5s5p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="400" wavelength="3403.652" aki="0.77" energy1="30113.990" energy2="59485.768" electronconfig1="5s5p" electronconfig2="5s5d" term1="3P°" term2="3D" J1="0" J2="1" /> + <spectrum intensity="500" wavelength="3466.200" aki="1.2" energy1="30656.087" energy2="59497.868" electronconfig1="5s5p" electronconfig2="5s5d" term1="3P°" term2="3D" J1="1" J2="2" /> + <spectrum intensity="400" wavelength="3467.655" aki="0.67" energy1="30656.087" energy2="59485.768" electronconfig1="5s5p" electronconfig2="5s5d" term1="3P°" term2="3D" J1="1" J2="1" /> + <spectrum intensity="500" wavelength="3610.508" aki="1.3" energy1="31826.952" energy2="59515.980" electronconfig1="5s5p" electronconfig2="5s5d" term1="3P°" term2="3D" J1="2" J2="3" /> + <spectrum intensity="400" wavelength="3612.873" aki="0.35" energy1="31826.952" energy2="59497.868" electronconfig1="5s5p" electronconfig2="5s5d" term1="3P°" term2="3D" J1="2" J2="2" /> + <spectrum intensity="100" wavelength="4678.149" aki="0.13" energy1="30113.990" energy2="51483.980" electronconfig1="5s5p" electronconfig2="5s6s" term1="3P°" term2="3S" J1="0" J2="1" /> + <spectrum intensity="150" wavelength="4799.912" aki="0.41" energy1="30656.087" energy2="51483.980" electronconfig1="5s5p" electronconfig2="5s6s" term1="3P°" term2="3S" J1="1" J2="1" /> + <spectrum intensity="500" wavelength="5085.822" aki="0.56" energy1="31826.952" energy2="51483.980" electronconfig1="5s5p" electronconfig2="5s6s" term1="3P°" term2="3S" J1="2" J2="1" /> + <spectrum intensity="1000" wavelength="6438.470" aki="0.59" energy1="43692.384" energy2="59219.734" electronconfig1="5s5p" electronconfig2="5s5d" term1="1P°" term2="1D" J1="1" J2="2" /> + </spectra> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="F. Stromeyer">1817</date> + <biologicalmeaning>5</biologicalmeaning> + <group>2</group> + <electronaffinity>32</electronaffinity> + <electronegativity>1.69</electronegativity> + <meltingpoint>594.26</meltingpoint> + <boilingpoint>1040</boilingpoint> + <density>8.64</density> + <ionisationenergy> + <energy>8.993 </energy> + </ionisationenergy> + <radius> + <covalent>148.9</covalent> + <atomic>155</atomic> + <vdw>158</vdw> + </radius> + <orbits>Kr 4d10 5s2</orbits> + <oxydation>+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="105.906" neutron="58" percentage="1.215" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="1.417" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="" spin="5/2+" magmoment="" halflife="23400" halflifeformat="seconds" weight="106.90661" neutron="59" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="107.904" neutron="60" percentage="0.875" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.16" spin="5/2+" magmoment="-0.8270" halflife="38880000" halflifeformat="seconds" weight="108.90498" neutron="61" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="109.90301" neutron="62" percentage="12.49" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-0.5943" halflife="" halflifeformat="seconds" weight="110.90418" neutron="63" percentage="12.8" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="111.90276" neutron="64" percentage="24.13" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-0.6217" halflife="" halflifeformat="seconds" weight="112.90440" neutron="65" percentage="12.22" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="113.90336" neutron="66" percentage="28.73" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.45" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-0.648" halflife="192456" halflifeformat="seconds" weight="114.90543" neutron="67" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="115.905" neutron="68" percentage="7.58" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>49</number> + <name origin="Named after 'Indigo' because of its blue spectrum">Indium</name> + <symbol>In</symbol> + <period>5</period> + <spectra> + <spectrum intensity="14" wavelength="1711.1" aki="0.0" energy1="2212.598" energy2="60654" electronconfig1="5p" electronconfig2="5s5p2" term1="2P°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="14" wavelength="1757.3" aki="0.0" energy1="0.000" energy2="56905" electronconfig1="5p" electronconfig2="5s5p2" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="60" wavelength="2560.150" aki="0.20" energy1="0.000" energy2="39048.53" electronconfig1="5p" electronconfig2="6d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="90" wavelength="2710.265" aki="0.27" energy1="2212.598" energy2="39098.38" electronconfig1="5p" electronconfig2="6d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="40" wavelength="2753.878" aki="0.13" energy1="0.000" energy2="36301.84" electronconfig1="5p" electronconfig2="7s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="60" wavelength="2932.630" aki="0.23" energy1="2212.598" energy2="36301.84" electronconfig1="5p" electronconfig2="7s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + <spectrum intensity="400" wavelength="3039.356" aki="1.11" energy1="0.000" energy2="32892.21" electronconfig1="5p" electronconfig2="5d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="700" wavelength="3256.089" aki="1.30" energy1="2212.598" energy2="32915.54" electronconfig1="5p" electronconfig2="5d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="150" wavelength="3258.565" aki="0.30" energy1="2212.598" energy2="32892.21" electronconfig1="5p" electronconfig2="5d" term1="2P°" term2="2D" J1="3/2" J2="3/2" /> + <spectrum intensity="900" wavelength="4101.7504" aki="0.50" energy1="0.000" energy2="24372.956" electronconfig1="5p" electronconfig2="6s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="4511.2972" aki="0.89" energy1="2212.598" energy2="24372.956" electronconfig1="5p" electronconfig2="6s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + <spectrum intensity="1" wavelength="12912.59" aki="0.0" energy1="24372.956" energy2="32115.22" electronconfig1="6s" electronconfig2="6p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="1" wavelength="13429.96" aki="0.0" energy1="24372.956" energy2="31816.96" electronconfig1="6s" electronconfig2="6p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + </spectra> + <mass>114.818</mass> + <block>p</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="F. Reich. H.T. Richter">1863</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <electronaffinity>-29</electronaffinity> + <electronegativity>1.78</electronegativity> + <meltingpoint>429.78</meltingpoint> + <boilingpoint>2350</boilingpoint> + <density>7.31</density> + <ionisationenergy> + <energy>5.786</energy> + <energy>18.9</energy> + <energy>28.0</energy> + </ionisationenergy> + <radius> + <covalent>144</covalent> + <atomic>155</atomic> + <vdw>193</vdw> + </radius> + <orbits>Kr 4d10 5s2 5p1</orbits> + <oxydation>+3.(+1.+2)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="+5.5229" halflife="" halflifeformat="seconds" weight="112.90406" neutron="64" percentage="4.28" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="+5.534" halflife="" halflifeformat="seconds" weight="114.90388" neutron="66" percentage="95.72" /> + </isotopes> + <family>Other_Metal</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>50</number> + <name origin="Latin 'stannum' for tin">Tin</name> + <symbol>Sn</symbol> + <period>5</period> + <mass>118.710</mass> + <block>p</block> + <spectra> + <spectrum intensity="200" wavelength="2091.590" aki="0.0" energy1="1691.806" energy2="49487.127" electronconfig1="5p2" electronconfig2="5p5d" term1="3P" term2="3P°" J1="1" J2="0" /> + <spectrum intensity="200" wavelength="2199.346" aki="0.29" energy1="1691.806" energy2="47145.684" electronconfig1="5p2" electronconfig2="5p5d" term1="3P" term2="3F°" J1="1" J2="2" /> + <spectrum intensity="300" wavelength="2209.660" aki="0.56" energy1="3427.673" energy2="48669.409" electronconfig1="5p2" electronconfig2="5p5d" term1="3P" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="300" wavelength="2246.057" aki="1.48" energy1="0.000" energy2="44508.677" electronconfig1="5p2" electronconfig2="5p5d" term1="3P" term2="3D°" J1="0" J2="1" /> + <spectrum intensity="300" wavelength="2268.930" aki="1.14" energy1="3427.673" energy2="47487.696" electronconfig1="5p2" electronconfig2="5p5d" term1="3P" term2="3F°" J1="2" J2="3" /> + <spectrum intensity="700" wavelength="2354.850" aki="1.85" energy1="1691.806" energy2="44144.368" electronconfig1="5p2" electronconfig2="5p5d" term1="3P" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="600" wavelength="2421.694" aki="2.5" energy1="8612.955" energy2="49893.823" electronconfig1="5p2" electronconfig2="5p5d" term1="1D" term2="1F°" J1="2" J2="3" /> + <spectrum intensity="700" wavelength="2429.495" aki="1.5" energy1="3427.673" energy2="44576.006" electronconfig1="5p2" electronconfig2="5p5d" term1="3P" term2="3D°" J1="2" J2="3" /> + <spectrum intensity="140" wavelength="2661.244" aki="0.153" energy1="1691.806" energy2="39257.053" electronconfig1="5p2" electronconfig2="5p6s" term1="3P" term2="1P°" J1="1" J2="1" /> + <spectrum intensity="500" wavelength="2706.505" aki="0.539" energy1="1691.806" energy2="38628.876" electronconfig1="5p2" electronconfig2="5p6s" term1="3P" term2="3P°" J1="1" J2="2" /> + <spectrum intensity="1000" wavelength="2839.976" aki="1.57" energy1="3427.673" energy2="38628.876" electronconfig1="5p2" electronconfig2="5p6s" term1="3P" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="700" wavelength="2863.315" aki="0.544" energy1="0.000" energy2="34914.282" electronconfig1="5p2" electronconfig2="5p6s" term1="3P" term2="3P°" J1="0" J2="1" /> + <spectrum intensity="500" wavelength="3009.133" aki="0.355" energy1="1691.806" energy2="34914.282" electronconfig1="5p2" electronconfig2="5p6s" term1="3P" term2="3P°" J1="1" J2="1" /> + <spectrum intensity="600" wavelength="3034.115" aki="1.89" energy1="1691.806" energy2="34640.758" electronconfig1="5p2" electronconfig2="5p6s" term1="3P" term2="3P°" J1="1" J2="0" /> + <spectrum intensity="400" wavelength="3175.035" aki="0.893" energy1="3427.673" energy2="34914.282" electronconfig1="5p2" electronconfig2="5p6s" term1="3P" term2="3P°" J1="2" J2="1" /> + <spectrum intensity="400" wavelength="3262.331" aki="2.7" energy1="8612.955" energy2="39257.053" electronconfig1="5p2" electronconfig2="5p6s" term1="1D" term2="1P°" J1="2" J2="1" /> + <spectrum intensity="200" wavelength="3801.011" aki="0.28" energy1="8612.955" energy2="34914.282" electronconfig1="5p2" electronconfig2="5p6s" term1="1D" term2="3P°" J1="2" J2="1" /> + <spectrum intensity="110" wavelength="4524.734" aki="0.26" energy1="17162.499" energy2="39257.053" electronconfig1="5p2" electronconfig2="5p6s" term1="1S" term2="1P°" J1="0" J2="1" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>6</biologicalmeaning> + <group>4</group> + <electronaffinity>-116</electronaffinity> + <electronegativity>1.96</electronegativity> + <meltingpoint>505.12</meltingpoint> + <boilingpoint>2876</boilingpoint> + <density>7.29</density> + <ionisationenergy> + <energy>7.344 </energy> + </ionisationenergy> + <radius> + <covalent>140.5</covalent> + <atomic>145</atomic> + <vdw>217</vdw> + </radius> + <orbits>Kr 4d10 5s2 5p2</orbits> + <oxydation>+2.+4</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="111.90482" neutron="62" percentage="0.97" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="1.02" spin="1/2+" magmoment="" halflife="9943776" halflifeformat="seconds" weight="112.90517" neutron="63" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="113.903" neutron="64" percentage="0.65" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-0.91883" halflife="" halflifeformat="seconds" weight="114.904" neutron="65" percentage="0.36" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="115.902" neutron="66" percentage="14.53" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="1.00104" halflife="" halflifeformat="seconds" weight="116.903" neutron="67" percentage="7.68" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="117.902" neutron="68" percentage="24.22" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-1.04728" halflife="" halflifeformat="seconds" weight="118.903" neutron="69" percentage="8.58" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="119.902" neutron="70" percentage="32.59" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.388" ecpercentage="" ecdecay="" spin="3/2+" magmoment="" halflife="97416" halflifeformat="seconds" weight="120.90424" neutron="71" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="121.903" neutron="72" percentage="4.63" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="123.905" neutron="74" percentage="5.79" /> + </isotopes> + <family>Other_Metal</family> + <crystalstructure>own</crystalstructure> + </element> + <element> + <number>51</number> + <name origin="Arabic 'anthos ammonos' for 'blossom of the god Ammon'">Antimony</name> + <symbol>Sb</symbol> + <period>5</period> + <mass>121.760</mass> + <spectra> + <spectrum intensity="400" wavelength="1871.154" aki="0.0" energy1="0.000" energy2="53442.967" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)5d" term1="4S°" term2="4P" J1="3/2" J2="5/2" /> + <spectrum intensity="60" wavelength="2049.577" aki="0.0" energy1="8512.125" energy2="57287.052" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)5d" term1="2D°" term2="2F" J1="3/2" J2="5/2" /> + <spectrum intensity="400" wavelength="2068.344" aki="1.81" energy1="0.000" energy2="48332.424" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)6s" term1="4S°" term2="4P" J1="3/2" J2="5/2" /> + <spectrum intensity="40" wavelength="2139.698" aki="1.74" energy1="8512.125" energy2="55232.963" electronconfig1="5s25p3" electronconfig2="5s25p2(1D)6s" term1="2D°" term2="2D" J1="3/2" J2="3/2" /> + <spectrum intensity="40" wavelength="2144.841" aki="0.0" energy1="8512.125" energy2="55120.943" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)5d" term1="2D°" term2="4F" J1="3/2" J2="5/2" /> + <spectrum intensity="600" wavelength="2175.818" aki="1.75" energy1="0.000" energy2="45945.340" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)6s" term1="4S°" term2="4P" J1="3/2" J2="3/2" /> + <spectrum intensity="100" wavelength="2179.190" aki="2.39" energy1="9854.018" energy2="55728.264" electronconfig1="5s25p3" electronconfig2="5s25p2(1D)6s" term1="2D°" term2="2D" J1="5/2" J2="5/2" /> + <spectrum intensity="120" wavelength="2208.430" aki="0.0" energy1="9854.018" energy2="55120.943" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)5d" term1="2D°" term2="4F" J1="5/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="2311.463" aki="1.69" energy1="0.000" energy2="43249.337" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)6s" term1="4S°" term2="4P" J1="3/2" J2="1/2" /> + <spectrum intensity="800" wavelength="2528.509" aki="1.77" energy1="9854.018" energy2="49391.133" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)6s" term1="2D°" term2="2P" J1="5/2" J2="3/2" /> + <spectrum intensity="600" wavelength="2598.048" aki="0.210" energy1="8512.125" energy2="46991.058" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)6s" term1="2D°" term2="2P" J1="3/2" J2="1/2" /> + <spectrum intensity="400" wavelength="2877.913" aki="0.424" energy1="8512.125" energy2="43249.337" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)6s" term1="2D°" term2="4P" J1="3/2" J2="1/2" /> + <spectrum intensity="250" wavelength="3232.495" aki="0.307" energy1="18464.202" energy2="49391.133" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)6s" term1="2P°" term2="2P" J1="3/2" J2="3/2" /> + <spectrum intensity="300" wavelength="3267.491" aki="0.495" energy1="16395.359" energy2="46991.058" electronconfig1="5s25p3" electronconfig2="5s25p2(3P)6s" term1="2P°" term2="2P" J1="1/2" J2="1/2" /> + </spectra> + <block>p</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <electronaffinity>-103</electronaffinity> + <electronegativity>2.05</electronegativity> + <meltingpoint>903.91</meltingpoint> + <boilingpoint>1860</boilingpoint> + <density>6.69</density> + <ionisationenergy> + <energy>8.641 </energy> + </ionisationenergy> + <radius> + <covalent>138</covalent> + <atomic>145</atomic> + <vdw></vdw> + <ionic charge="+5">62</ionic> + </radius> + <orbits>Kr 4d10 5s2 5p3</orbits> + <oxydation>(-3).+3.(+5)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+3.3592" halflife="" halflifeformat="seconds" weight="120.904" neutron="70" percentage="57.25" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.5466" halflife="" halflifeformat="seconds" weight="122.904" neutron="72" percentage="42.75" /> + </isotopes> + <family>Metalloids</family> + <crystalstructure>rh</crystalstructure> + </element> + <element> + <number>52</number> + <name origin="Latin 'tellus' or 'telluris' for 'Planet Earth'">Tellurium</name> + <symbol>Te</symbol> + <period>5</period> + <mass>127.60</mass> + <block>p</block> + <spectra> + <spectrum intensity="500" wavelength="1822.155" aki="0.0" energy1="0.000" energy2="54880.070" electronconfig1="5p4" electronconfig2="5p3(2D)6s" term1="3P" term2="3D°" J1="2" J2="2" /> + <spectrum intensity="500" wavelength="1857.296" aki="0.0" energy1="4750.712" energy2="58592.434" electronconfig1="5p4" electronconfig2="5p3(4S)5d" term1="3P" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="500" wavelength="1994.839" aki="0.0" energy1="4750.712" energy2="54880.070" electronconfig1="5p4" electronconfig2="5p3(2D)6s" term1="3P" term2="3D°" J1="1" J2="2" /> + <spectrum intensity="1000" wavelength="2002.028" aki="0.0" energy1="4750.712" energy2="54683.886" electronconfig1="5p4" electronconfig2="5p3(2D)6s" term1="3P" term2="3D°" J1="1" J2="1" /> + <spectrum intensity="250" wavelength="2081.172" aki="0.0" energy1="10557.877" energy2="58592.434" electronconfig1="5p4" electronconfig2="5p3(4S)5d" term1="1D" term2="3D°" J1="2" J2="2" /> + <spectrum intensity="700" wavelength="2142.822" aki="3.11" energy1="0.000" energy2="46652.738" electronconfig1="5p4" electronconfig2="5p3(4S)6s" term1="3P" term2="3S°" J1="2" J2="1" /> + <spectrum intensity="120" wavelength="2147.260" aki="0.0" energy1="10557.877" energy2="57114.206" electronconfig1="5p4" electronconfig2="5p3(2D)6s" term1="1D" term2="1D°" J1="2" J2="2" /> + <spectrum intensity="20" wavelength="2259.034" aki="0.13" energy1="0.000" energy2="44253.000" electronconfig1="5p4" electronconfig2="5p3(4S)6s" term1="3P" term2="5S°" J1="2" J2="2" /> + <spectrum intensity="50" wavelength="2383.277" aki="0.40" energy1="4706.500" energy2="46652.738" electronconfig1="5p4" electronconfig2="5p3(4S)6s" term1="3P" term2="3S°" J1="0" J2="1" /> + <spectrum intensity="60" wavelength="2385.792" aki="0.81" energy1="4750.712" energy2="46652.738" electronconfig1="5p4" electronconfig2="5p3(4S)6s" term1="3P" term2="3S°" J1="1" J2="1" /> + <spectrum intensity="200" wavelength="9722.742" aki="0.0" energy1="44253.000" energy2="54535.345" electronconfig1="5p3(4S)6s" electronconfig2="5p3(4S)6p" term1="5S°" term2="5P" J1="2" J2="3" /> + <spectrum intensity="250" wavelength="10051.41" aki="0.0" energy1="44253.000" energy2="54199.122" electronconfig1="5p3(4S)6s" electronconfig2="5p3(4S)6p" term1="5S°" term2="5P" J1="2" J2="2" /> + <spectrum intensity="400" wavelength="11089.56" aki="0.0" energy1="46652.738" energy2="55667.758" electronconfig1="5p3(4S)6s" electronconfig2="5p3(4S)6p" term1="3S°" term2="3P" J1="1" J2="2" /> + <spectrum intensity="250" wavelength="11487.23" aki="0.0" energy1="46652.738" energy2="55355.672" electronconfig1="5p3(4S)6s" electronconfig2="5p3(4S)6p" term1="3S°" term2="3P" J1="1" J2="1" /> + </spectra> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="F. Mller von Reichenstein">1782</date> + <biologicalmeaning>0</biologicalmeaning> + <group>6</group> + <electronaffinity>-190</electronaffinity> + <electronegativity>2.1</electronegativity> + <meltingpoint>722.72</meltingpoint> + <boilingpoint>1261</boilingpoint> + <density>6.25</density> + <ionisationenergy> + <energy>9.009 </energy> + </ionisationenergy> + <radius> + <covalent>135</covalent> + <atomic>140</atomic> + <vdw>206</vdw> + <ionic charge="-2">222</ionic> + </radius> + <orbits>Kr 4d10 5s2 5p4</orbits> + <oxydation>(-2).+4.(+6)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="119.904048" neutron="68" percentage="0.09" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="1.29" spin="1/2+" magmoment="" halflife="1449792" halflifeformat="seconds" weight="120.90494" neutron="69" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="" halflifeformat="seconds" weight="121.904048" neutron="69" percentage="2.59" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.052" spin="1/2+" magmoment="-0.7359" halflife="13000000000000" halflifeformat="years" weight="122.90427" neutron="70" percentage="0.905" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="123.90282" neutron="71" percentage="4.79" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-0.8871" halflife="" halflifeformat="seconds" weight="124.90443" neutron="72" percentage="7.12" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="125.90331" neutron="73" percentage="18.93" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.697" ecpercentage="" ecdecay="" spin="3/2+" magmoment="" halflife="33660" halflifeformat="seconds" weight="126.90522" neutron="74" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="127.90446" neutron="75" percentage="31.7" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="129.906229" neutron="78" percentage="34.08" /> + </isotopes> + <family>Metalloids</family> + <crystalstructure>hcp</crystalstructure> + </element> + <element> + <number>53</number> + <name origin="Greek 'ioeides' for 'violett'">Iodine</name> + <symbol>I</symbol> + <period>5</period> + <mass>126.90447</mass> + <block>p</block> + <spectra> + <spectrum intensity="130" wavelength="1457.98" aki="0.0" energy1="0.00" energy2="68587.87" electronconfig1="5p5" electronconfig2="5p4(1D2)6s" term1="2P°" term2="2[2]" J1="3/2" J2="5/2" /> + <spectrum intensity="200" wavelength="1518.05" aki="0.0" energy1="7603.15" energy2="73477.24" electronconfig1="5p5" electronconfig2="5p4(3P1)5d" term1="2P°" term2="2[1]" J1="1/2" J2="1/2" /> + <spectrum intensity="200" wavelength="1702.07" aki="2.05" energy1="7603.15" energy2="66355.10" electronconfig1="5p5" electronconfig2="5p4(3P2)5d" term1="2P°" term2="2[1]" J1="1/2" J2="3/2" /> + <spectrum intensity="150" wavelength="1782.76" aki="2.71" energy1="0.00" energy2="56092.88" electronconfig1="5p5" electronconfig2="5p4(3P2)6s" term1="2P°" term2="2[2]" J1="3/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="1830.38" aki="0.16" energy1="0.00" energy2="54633.46" electronconfig1="5p5" electronconfig2="5p4(3P2)6s" term1="2P°" term2="2[2]" J1="3/2" J2="5/2" /> + <spectrum intensity="200" wavelength="1844.45" aki="0.070" energy1="7603.15" energy2="61819.76" electronconfig1="5p5" electronconfig2="5p4(3P1)6s" term1="2P°" term2="2[1]" J1="1/2" J2="3/2" /> + <spectrum intensity="25" wavelength="2061.63" aki="0.030" energy1="7603.15" energy2="56092.88" electronconfig1="5p5" electronconfig2="5p4(3P2)6s" term1="2P°" term2="2[2]" J1="1/2" J2="3/2" /> + <spectrum intensity="130" wavelength="5119.29" aki="0.0" energy1="56092.88" energy2="75621.41" electronconfig1="5p4(3P2)6s" electronconfig2="5p4(3P2)7p" term1="2[2]" term2="2[1]" J1="3/2" J2="3/2" /> + <spectrum intensity="130" wavelength="8043.74" aki="0.0" energy1="54633.46" energy2="67062.09" electronconfig1="5p4(3P2)6s" electronconfig2="5p4(3P2)6p" term1="2[2]" term2="2[1]°" J1="5/2" J2="3/2" /> + <spectrum intensity="200" wavelength="9058.33" aki="0.0" energy1="54633.46" energy2="65669.99" electronconfig1="5p4(3P2)6s" electronconfig2="5p4(3P2)6p" term1="2[2]" term2="2[3]°" J1="5/2" J2="7/2" /> + </spectra> + <acidicbehaviour>3</acidicbehaviour> + <date scientist="B. Courtois">1811</date> + <biologicalmeaning>2</biologicalmeaning> + <group>7</group> + <electronaffinity>-295</electronaffinity> + <electronegativity>2.66</electronegativity> + <meltingpoint>386.7</meltingpoint> + <boilingpoint>457.5</boilingpoint> + <density>4.94</density> + <ionisationenergy> + <energy>10.451 </energy> + </ionisationenergy> + <radius> + <covalent>133.1</covalent> + <atomic>140</atomic> + <vdw>198</vdw> + </radius> + <orbits>Kr 4d10 5s2 5p5</orbits> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+2.808" halflife="" halflifeformat="seconds" weight="126.90448" neutron="74" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.193" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.617" halflife="15700000" halflifeformat="years" weight="128.90499" neutron="76" percentage="" /> + </isotopes> + <oxydation>-1.(+1.+3.+5.+7)</oxydation> + <family>Halogene</family> + <crystalstructure>or</crystalstructure> + </element> + <element> + <number>54</number> + <name origin="Greek 'xenos' for 'foreigner'">Xenon</name> + <symbol>Xe</symbol> + <period>5</period> + <mass>131.293</mass> + <spectra> + <spectrum intensity="25" wavelength="1192.0376" aki="5.93" energy1="0.000" energy2="83889.971" electronconfig1="5p6" electronconfig2="5p5(2P°3/2)5d" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="25" wavelength="1250.2091" aki="0.149" energy1="0.000" energy2="79986.619" electronconfig1="5p6" electronconfig2="5p5(2P°3/2)5d" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="100" wavelength="1295.5878" aki="2.53" energy1="0.000" energy2="77185.040" electronconfig1="5p6" electronconfig2="5p5(2P°1/2)6s" term1="1S" term2="2[1/2]°" J1="0" J2="1" /> + <spectrum intensity="60" wavelength="1469.6123" aki="2.73" energy1="0.000" energy2="68045.156" electronconfig1="5p6" electronconfig2="5p5(2P°3/2)6s" term1="1S" term2="2[3/2]°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="8231.635" aki="0.0" energy1="67067.547" energy2="79212.464" electronconfig1="5p5(2P°3/2)6s" electronconfig2="5p5(2P°3/2)6p" term1="2[3/2]°" term2="2[3/2]" J1="2" J2="2" /> + <spectrum intensity="700" wavelength="8280.117" aki="0.0" energy1="68045.156" energy2="80118.962" electronconfig1="5p5(2P°3/2)6s" electronconfig2="5p5(2P°3/2)6p" term1="2[3/2]°" term2="2[1/2]" J1="1" J2="0" /> + <spectrum intensity="500" wavelength="8819.411" aki="0.0" energy1="67067.547" energy2="78403.060" electronconfig1="5p5(2P°3/2)6s" electronconfig2="5p5(2P°3/2)6p" term1="2[3/2]°" term2="2[5/2]" J1="2" J2="3" /> + <spectrum intensity="300" wavelength="9923.190" aki="0.0" energy1="68045.156" energy2="78119.798" electronconfig1="5p5(2P°3/2)6s" electronconfig2="5p5(2P°3/2)6p" term1="2[3/2]°" term2="2[5/2]" J1="1" J2="2" /> + <spectrum intensity="250" wavelength="12623.399" aki="0.0" energy1="77269.144" energy2="85188.774" electronconfig1="5p5(2P°3/2)6p" electronconfig2="5p5(2P°3/2)7s" term1="2[1/2]" term2="2[3/2]°" J1="1" J2="2" /> + <spectrum intensity="300" wavelength="14732.816" aki="0.0" energy1="78403.060" energy2="85188.774" electronconfig1="5p5(2P°3/2)6p" electronconfig2="5p5(2P°3/2)7s" term1="2[5/2]" term2="2[3/2]°" J1="3" J2="2" /> + <spectrum intensity="600" wavelength="31069.23" aki="0.0" energy1="79212.464" energy2="82430.205" electronconfig1="5p5(2P°3/2)6p" electronconfig2="5p5(2P°3/2)5d" term1="2[3/2]" term2="2[5/2]°" J1="2" J2="3" /> + <spectrum intensity="500" wavelength="35070.26" aki="0.0" energy1="78119.798" energy2="80970.439" electronconfig1="5p5(2P°3/2)6p" electronconfig2="5p5(2P°3/2)5d" term1="2[5/2]" term2="2[7/2]°" J1="2" J2="3" /> + </spectra> + <block>p</block> + <acidicbehaviour>1</acidicbehaviour> + <date scientist="W. Ramsay. M. W. Travers">1898</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>41</electronaffinity> + <electronegativity></electronegativity> + <meltingpoint>161.39</meltingpoint> + <boilingpoint>165.1</boilingpoint> + <density>4.49</density> + <ionisationenergy> + <energy>12.130 </energy> + </ionisationenergy> + <radius> + <covalent>130</covalent> + <atomic>108</atomic> + <vdw>216</vdw> + </radius> + <orbits>Kr 4d10 5s2 5p6</orbits> + <oxydation>+4.(+2.+6)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="123.90590" neutron="70" percentage="0.094" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="" spin="1/2+" magmoment="" halflife="60840" halflifeformat="seconds" weight="124.90640" neutron="71" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="125.904" neutron="72" percentage="0.088" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.44" spin="1/2+" magmoment="" halflife="3144960" halflifeformat="seconds" weight="126.90519" neutron="73" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="127.904" neutron="74" percentage="1.9" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-0.7768" halflife="" halflifeformat="seconds" weight="128.905" neutron="75" percentage="26.23" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="129.904" neutron="76" percentage="4.07" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.691861" halflife="" halflifeformat="seconds" weight="130.905" neutron="77" percentage="21.17" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="131.904" neutron="78" percentage="26.96" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.427" ecpercentage="" ecdecay="" spin="3/2+" magmoment="" halflife="452995.2" halflifeformat="seconds" weight="132.90590" neutron="79" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="133.905" neutron="80" percentage="10.54" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.16" ecpercentage="" ecdecay="" spin="3/2+" magmoment="" halflife="32904" halflifeformat="seconds" weight="134.90713" neutron="81" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="135.907" neutron="82" percentage="8.95" /> + </isotopes> + <family>Noblegas</family> + </element> + <element> + <number>55</number> + <name origin="Latin 'caesius' for 'heavenblue'">Caesium</name> + <symbol>Cs</symbol> + <period>6</period> + <mass>132.90545</mass> + <spectra> + <spectrum intensity="15" wavelength="4555.28" aki="0.0188" energy1="0.0000" energy2="21946.396" electronconfig1="6s" electronconfig2="7p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="8" wavelength="4593.17" aki="0.0080" energy1="0.0000" energy2="21765.35" electronconfig1="6s" electronconfig2="7p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="1000" wavelength="8521.13" aki="0.3276" energy1="0.0000" energy2="11732.3079" electronconfig1="6s" electronconfig2="6p" term1="2S" term2="2P°" J1="1/2" J2="3/2" /> + <spectrum intensity="250" wavelength="8761.41" aki="0.0" energy1="11178.2686" energy2="22588.8210" electronconfig1="6p" electronconfig2="6d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="1000" wavelength="8943.47" aki="0.287" energy1="0.0000" energy2="11178.2686" electronconfig1="6s" electronconfig2="6p" term1="2S" term2="2P°" J1="1/2" J2="1/2" /> + <spectrum intensity="300" wavelength="9172.32" aki="0.0" energy1="11732.3079" energy2="22631.6863" electronconfig1="6p" electronconfig2="6d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + <spectrum intensity="600" wavelength="13588.29" aki="0.0" energy1="11178.2686" energy2="18535.529" electronconfig1="6p" electronconfig2="7s" term1="2P°" term2="2S" J1="1/2" J2="1/2" /> + <spectrum intensity="900" wavelength="14694.91" aki="0.0" energy1="11732.3079" energy2="18535.529" electronconfig1="6p" electronconfig2="7s" term1="2P°" term2="2S" J1="3/2" J2="1/2" /> + <spectrum intensity="50" wavelength="30103.27" aki="0.0" energy1="11178.2686" energy2="14499.2584" electronconfig1="6p" electronconfig2="5d" term1="2P°" term2="2D" J1="1/2" J2="3/2" /> + <spectrum intensity="20" wavelength="34900.13" aki="0.0" energy1="11732.3079" energy2="14596.8423" electronconfig1="6p" electronconfig2="5d" term1="2P°" term2="2D" J1="3/2" J2="5/2" /> + </spectra> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="Robert Wilhelm Bunsen. Gustav Robert Kirchhoff">1860</date> + <biologicalmeaning>0</biologicalmeaning> + <group>1</group> + <electronaffinity>-45</electronaffinity> + <electronegativity>0.79</electronegativity> + <meltingpoint>301.54</meltingpoint> + <boilingpoint>944</boilingpoint> + <density>1.90</density> + <ionisationenergy> + <energy>3.894 </energy> + </ionisationenergy> + <radius> + <covalent>235</covalent> + <atomic>265.4</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 6s1</orbits> + <oxydation>+1</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.579" halflife="" halflifeformat="seconds" weight="132.90544" neutron="78" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="2.05" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.729" halflife="2300000" halflifeformat="years" weight="134.90589" neutron="80" percentage="" /> + </isotopes> + <family>Alkali_Earth</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>56</number> + <name origin="Greek 'barys' for 'heavy'">Barium</name> + <symbol>Ba</symbol> + <period>6</period> + <mass>137.237</mass> + <spectra> + <spectrum intensity="30" wavelength="3071.584" aki="0.41" energy1="0.000" energy2="32547.033" electronconfig1="6s2" electronconfig2="6s7p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="80" wavelength="3501.108" aki="0.35" energy1="0.000" energy2="28554.221" electronconfig1="6s2" electronconfig2="5d6p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="1000" wavelength="5535.481" aki="1.19" energy1="0.000" energy2="18060.261" electronconfig1="6s2" electronconfig2="6s6p" term1="1S" term2="1P°" J1="0" J2="1" /> + <spectrum intensity="250" wavelength="6498.760" aki="0.54" energy1="9596.533" energy2="24979.834" electronconfig1="6s5d" electronconfig2="5d6p" term1="3D" term2="3D°" J1="3" J2="3" /> + <spectrum intensity="110" wavelength="6527.312" aki="0.33" energy1="9215.501" energy2="24531.513" electronconfig1="6s5d" electronconfig2="5d6p" term1="3D" term2="3D°" J1="2" J2="2" /> + <spectrum intensity="100" wavelength="6595.325" aki="0.38" energy1="9033.966" energy2="24192.033" electronconfig1="6s5d" electronconfig2="5d6p" term1="3D" term2="3D°" J1="1" J2="1" /> + <spectrum intensity="50" wavelength="6693.842" aki="0.146" energy1="9596.533" energy2="24531.513" electronconfig1="6s5d" electronconfig2="5d6p" term1="3D" term2="3D°" J1="3" J2="2" /> + <spectrum intensity="200" wavelength="7059.943" aki="0.50" energy1="9596.533" energy2="23757.049" electronconfig1="6s5d" electronconfig2="5d6p" term1="3D" term2="3F°" J1="3" J2="4" /> + <spectrum intensity="150" wavelength="7280.296" aki="0.32" energy1="9215.501" energy2="22947.423" electronconfig1="6s5d" electronconfig2="5d6p" term1="3D" term2="3F°" J1="2" J2="3" /> + <spectrum intensity="80" wavelength="7672.085" aki="0.15" energy1="9033.966" energy2="22064.645" electronconfig1="6s5d" electronconfig2="5d6p" term1="3D" term2="3F°" J1="1" J2="2" /> + <spectrum intensity="60" wavelength="8559.998" aki="0.20" energy1="11395.350" energy2="23074.387" electronconfig1="6s5d" electronconfig2="5d6p" term1="1D" term2="1D°" J1="2" J2="2" /> + <spectrum intensity="60" wavelength="14999.852" aki="0.0025" energy1="11395.350" energy2="18060.261" electronconfig1="6s5d" electronconfig2="6s6p" term1="1D" term2="1P°" J1="2" J2="1" /> + <spectrum intensity="50" wavelength="23253.56" aki="0.0" energy1="9215.501" energy2="13514.745" electronconfig1="6s5d" electronconfig2="6s6p" term1="3D" term2="3P°" J1="2" J2="2" /> + <spectrum intensity="60" wavelength="25514.88" aki="0.0" energy1="9596.533" energy2="13514.745" electronconfig1="6s5d" electronconfig2="6s6p" term1="3D" term2="3P°" J1="3" J2="2" /> + </spectra> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="Humphry Bartholomew Davy">1808</date> + <biologicalmeaning>3</biologicalmeaning> + <group>2</group> + <electronaffinity></electronaffinity> + <electronegativity>0.89</electronegativity> + <meltingpoint>1002</meltingpoint> + <boilingpoint>2078</boilingpoint> + <density>3.65</density> + <ionisationenergy> + <energy>5.212</energy> + <energy>10.0</energy> + </ionisationenergy> + <radius> + <covalent>198</covalent> + <atomic>217.3</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 6s2</orbits> + <oxydation>+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="129.906" neutron="74" percentage="0.101" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="1.16" spin="1/2+" magmoment="" halflife="1019520" halflifeformat="seconds" weight="130.90691" neutron="75" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="" halflifeformat="seconds" weight="131.905" neutron="76" percentage="0.097" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="133.90449" neutron="78" percentage="2.42" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.8365" halflife="" halflifeformat="seconds" weight="134.90567" neutron="79" percentage="6.59" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="135.90456" neutron="80" percentage="7.81" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.9357" halflife="" halflifeformat="seconds" weight="136.90582" neutron="81" percentage="11.32" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="" halflifeformat="seconds" weight="137.90524" neutron="82" percentage="71.66" /> + </isotopes> + <family>Alkaline_Earth</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>57</number> + <name origin="Greek 'lanthanein' for 'hidden'. The Lanthanoids are also called the 'rare earth'">Lanthanum</name> + <symbol>La</symbol> + <period>6</period> + <mass>138.9055</mass> + <block>f</block> + <spectra> + <spectrum intensity="300" wavelength="3574.43" aki="0.0" energy1="0.000" energy2="27968.54" electronconfig1="5d6s2" electronconfig2="4f5d(3D°)6s" term1="2D" term2="°" J1="3/2" J2="3/2" /> + <spectrum intensity="300" wavelength="4060.33" aki="0.0" energy1="4121.572" energy2="28743.24" electronconfig1="5d2(3F)6s" electronconfig2="4f5d(3G°)6s" term1="4F" term2="4G°" J1="9/2" J2="11/2" /> + <spectrum intensity="400" wavelength="4187.32" aki="0.0" energy1="0.000" energy2="23874.95" electronconfig1="5d6s2" electronconfig2="5d6s(3D)6p" term1="2D" term2="°" J1="3/2" J2="5/2" /> + <spectrum intensity="400" wavelength="4280.27" aki="0.0" energy1="1053.164" energy2="24409.68" electronconfig1="5d6s2" electronconfig2="4f5d(1G°)6s" term1="2D" term2="°" J1="5/2" J2="7/2" /> + <spectrum intensity="500" wavelength="4949.77" aki="0.87" energy1="0.000" energy2="20197.34" electronconfig1="5d6s2" electronconfig2="5d6s(1D)6p" term1="2D" term2="°" J1="3/2" J2="1/2" /> + <spectrum intensity="600" wavelength="5145.42" aki="0.0" energy1="3010.002" energy2="22439.36" electronconfig1="5d2(3F)6s" electronconfig2="5d2(3F)6p" term1="4F" term2="4D°" J1="5/2" J2="3/2" /> + <spectrum intensity="800" wavelength="5177.31" aki="0.0" energy1="3494.526" energy2="22804.25" electronconfig1="5d2(3F)6s" electronconfig2="5d2(3F)6p" term1="4F" term2="4D°" J1="7/2" J2="5/2" /> + <spectrum intensity="1000" wavelength="5211.86" aki="0.0" energy1="4121.572" energy2="23303.26" electronconfig1="5d2(3F)6s" electronconfig2="5d2(3F)6p" term1="4F" term2="4D°" J1="9/2" J2="7/2" /> + <spectrum intensity="700" wavelength="5234.27" aki="0.0" energy1="4121.572" energy2="23221.10" electronconfig1="5d2(3F)6s" electronconfig2="5d6s(3D)6p" term1="4F" term2="°" J1="9/2" J2="7/2" /> + <spectrum intensity="700" wavelength="5455.15" aki="0.0" energy1="1053.164" energy2="19379.40" electronconfig1="5d6s2" electronconfig2="5d2(3F)6p" term1="2D" term2="2D°" J1="5/2" J2="5/2" /> + <spectrum intensity="700" wavelength="5501.34" aki="0.529" energy1="0.000" energy2="18172.35" electronconfig1="5d6s2" electronconfig2="5d2(3F)6p" term1="2D" term2="2D°" J1="3/2" J2="3/2" /> + <spectrum intensity="600" wavelength="5791.34" aki="0.0" energy1="4121.572" energy2="21384.00" electronconfig1="5d2(3F)6s" electronconfig2="5d2(3F)6p" term1="4F" term2="4F°" J1="9/2" J2="9/2" /> + <spectrum intensity="1000" wavelength="6249.93" aki="0.0" energy1="4121.572" energy2="20117.38" electronconfig1="5d2(3F)6s" electronconfig2="5d2(3F)6p" term1="4F" term2="4G°" J1="9/2" J2="11/2" /> + <spectrum intensity="600" wavelength="6394.23" aki="0.0" energy1="3494.526" energy2="19129.31" electronconfig1="5d2(3F)6s" electronconfig2="5d2(3F)6p" term1="4F" term2="4G°" J1="7/2" J2="9/2" /> + <spectrum intensity="" wavelength="" aki="" energy1="" energy2="" electronconfig1="" electronconfig2="" term1="" term2="" J1="" J2="" /> + </spectra> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="K. G. Mosander">1839</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <electronaffinity></electronaffinity> + <electronegativity>1.10</electronegativity> + <meltingpoint>1191</meltingpoint> + <boilingpoint>3737</boilingpoint> + <density>6.16</density> + <ionisationenergy> + <energy>5.577</energy> + <energy>11.0</energy> + <energy>19.17</energy> + <energy>49.9</energy> + <energy>61.6</energy> + </ionisationenergy> + <radius> + <covalent>169</covalent> + <atomic>187.0</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 5d1 6s2</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="33.6" betaminusdecay="1.04" ecpercentage="66.4" ecdecay="1.75" spin="5+" magmoment="+3.707" halflife="105000000000" halflifeformat="years" weight="137.907105" neutron="81" percentage="0.0902" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.778" halflife="" halflifeformat="seconds" weight="138.91" neutron="82" percentage="99.9098" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="3.761" ecpercentage="" ecdecay="" spin="3-" magmoment="+0.73" halflife="144987.84" halflifeformat="seconds" weight="139.90947" neutron="83" percentage="" /> + </isotopes> + <family>Rare_Earth</family> + <crystalstructure>hcp</crystalstructure> + </element> + <element> + <number>58</number> + <name origin="Named after the planetoid Ceres">Cerium</name> + <symbol>Ce</symbol> + <period>6</period> + <mass>140.116</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="Jöns Jacob Berzelius. W. Hisinger. M. Klaproth">1803</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity></electronaffinity> + <electronegativity>1.12</electronegativity> + <meltingpoint>1071</meltingpoint> + <boilingpoint>3715</boilingpoint> + <density>6.77</density> + <ionisationenergy> + <energy>5.47</energy> + <energy>10.9</energy> + <energy>20.2</energy> + <energy>36.8</energy> + <energy>65.5</energy> + </ionisationenergy> + <radius> + <covalent>165</covalent> + <atomic>182.5</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f1 5d1 6s2</orbits> + <oxydation>+3.+4</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="135.907" neutron="78" percentage="0.193" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="100.0" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="" spin="3/2+" magmoment="" halflife="32400" halflifeformat="seconds" weight="136.90777" neutron="79" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="137.90663" neutron="80" percentage="0.25" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.27" spin="3/2+" magmoment="±0.9" halflife="11892096" halflifeformat="seconds" weight="138.905" neutron="81" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="139.905" neutron="82" percentage="88.46" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.581" ecpercentage="" ecdecay="" spin="7/2-" magmoment="±0.97" halflife="2808086.4" halflifeformat="seconds" weight="140.90827" neutron="83" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="141.909" neutron="84" percentage="11.07" /> + </isotopes> + <family>Rare_Earth</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>59</number> + <name origin="Greek 'prasinos didymos' for 'green twin'">Praseodymium</name> + <symbol>Pr</symbol> + <period>6</period> + <mass>140.90765</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="K. C. Auer von Welsbach">1885</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <electronaffinity></electronaffinity> + <electronegativity>1.13</electronegativity> + <meltingpoint>1204</meltingpoint> + <boilingpoint>3785</boilingpoint> + <density>6.48</density> + <ionisationenergy> + <energy>5.42</energy> + <energy>10.6</energy> + <energy>21.6</energy> + </ionisationenergy> + <radius> + <covalent>165</covalent> + <atomic>182.8</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f3 6s2</orbits> + <oxydation>+3.+4</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+4.3" halflife="" halflifeformat="seconds" weight="140.90765" neutron="82" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="99.98" betaminusdecay="2.160" ecpercentage="0.02" ecdecay="" spin="2-" magmoment="" halflife="68832" halflifeformat="seconds" weight="141.91004" neutron="83" percentage="" /> + </isotopes> + <family>Rare_Earth</family> + </element> + <element> + <number>60</number> + <name origin="Greek 'neos didymos' for 'new twin'">Neodymium</name> + <symbol>Nd</symbol> + <period>6</period> + <mass>144.24</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="C. Auer von Welsbach">1885</date> + <biologicalmeaning>0</biologicalmeaning> + <group>6</group> + <electronaffinity></electronaffinity> + <electronegativity>1.14</electronegativity> + <meltingpoint>1294</meltingpoint> + <boilingpoint>3347</boilingpoint> + <density>7.00</density> + <ionisationenergy> + <energy>5.49 </energy> + </ionisationenergy> + <radius> + <covalent>164</covalent> + <atomic>182.1</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f4 6s2</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="141.907" neutron="82" percentage="27.1" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="-1.08" halflife="" halflifeformat="seconds" weight="142.90981" neutron="83" percentage="12.2" /> + <isotope alphapercentage="100.0" alphadecay="1.83" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="2290000000000000" halflifeformat="years" weight="143.91008" neutron="84" percentage="23.8" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="-0.66" halflife="" halflifeformat="seconds" weight="144.912" neutron="85" percentage="8.3" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="145.913" neutron="86" percentage="17.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.91" ecpercentage="" ecdecay="" spin="5/2-" magmoment="0.59" halflife="948672" halflifeformat="seconds" weight="146.91610" neutron="87" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="147.916" neutron="88" percentage="5.72" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.66" ecpercentage="" ecdecay="" spin="5/2-" magmoment="" halflife="6192" halflifeformat="seconds" weight="148.92015" neutron="89" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="149.921" neutron="90" percentage="5.6" /> + </isotopes> + <family>Rare_Earth</family> + </element> + <element> + <number>61</number> + <name origin="Named after the greek Prometheus. Prometheus stole the fire from the gods and gave it to mankind.">Promethium</name> + <symbol>Pm</symbol> + <period>6</period> + <mass>146.9151</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="J. A. Marinsky. C. D. Coryell. L. E. Glendenin">1945</date> + <biologicalmeaning>0</biologicalmeaning> + <group>7</group> + <electronaffinity></electronaffinity> + <electronegativity>1.13</electronegativity> + <meltingpoint>1315</meltingpoint> + <boilingpoint>3273</boilingpoint> + <density>7.22</density> + <ionisationenergy> + <energy>5.55 </energy> + </ionisationenergy> + <radius> + <covalent>163</covalent> + <atomic>181.0</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f5 6s2</orbits> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.224" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.7" halflife="2.5" halflifeformat="years" weight="146.91513" neutron="86" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="2.46" ecpercentage="" ecdecay="" spin="1-" magmoment="" halflife="465696" halflifeformat="seconds" weight="147.91747" neutron="87" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.073" ecpercentage="" ecdecay="" spin="7/2+" magmoment="±3.3" halflife="191160" halflifeformat="seconds" weight="148.91833" neutron="88" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="3.43" ecpercentage="" ecdecay="" spin="1-" magmoment="" halflife="9720" halflifeformat="seconds" weight="149.92098" neutron="89" percentage="" /> + </isotopes> + <oxydation>+3</oxydation> + <family>Rare_Earth</family> + </element> + <element> + <number>62</number> + <name origin="Named after the mineral Samarskit">Samarium</name> + <symbol>Sm</symbol> + <period>6</period> + <mass>150.36</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="P. Lecoq de Boisbaudran">1879</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity></electronaffinity> + <electronegativity>1.17</electronegativity> + <meltingpoint>1347</meltingpoint> + <boilingpoint>2067</boilingpoint> + <density>7.54</density> + <ionisationenergy> + <energy>5.63 </energy> + </ionisationenergy> + <radius> + <covalent>166</covalent> + <atomic>180.2</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f6 6s2</orbits> + <oxydation>+2.+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="143.912" neutron="82" percentage="3" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.65" spin="7/2-" magmoment="" halflife="29376000" halflifeformat="seconds" weight="144.91341" neutron="83" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="2.55" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="103100000" halflifeformat="years" weight="145.91340" neutron="84" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="2.31" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="-0.813" halflife="106000000000" halflifeformat="years" weight="146.91489" neutron="85" percentage="14.97" /> + <isotope alphapercentage="100.0" alphadecay="2.00" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="12000000000000" halflifeformat="years" weight="147.91482" neutron="86" percentage="11.3" /> + <isotope alphapercentage="100.0" alphadecay="1.9" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="-0.670" halflife="400000000000000" halflifeformat="years" weight="148.91718" neutron="87" percentage="13.83" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="149.91727" neutron="88" percentage="7.44" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.076" ecpercentage="" ecdecay="" spin="5/2-" magmoment="" halflife="93" halflifeformat="years" weight="150.91933" neutron="89" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="151.919" neutron="90" percentage="26" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.8" ecpercentage="" ecdecay="" spin="3/2+" magmoment="-0.0217" halflife="166572" halflifeformat="seconds" weight="152.92209" neutron="91" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="153.922" neutron="92" percentage="20" /> + </isotopes> + <family>Rare_Earth</family> + </element> + <element> + <number>63</number> + <name origin="Named after Europe">Europium</name> + <symbol>Eu</symbol> + <period>6</period> + <mass>151.964</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="E. A. Demarcay">1901</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity></electronaffinity> + <electronegativity>1.2</electronegativity> + <meltingpoint>1095</meltingpoint> + <boilingpoint>1800</boilingpoint> + <density>5.25</density> + <ionisationenergy> + <energy>5.67 </energy> + </ionisationenergy> + <radius> + <covalent>185</covalent> + <atomic>204.2</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f7 6s2</orbits> + <oxydation>+2.+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+3.464" halflife="" halflifeformat="seconds" weight="150.919847" neutron="88" percentage="47.7" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+1.530" halflife="" halflifeformat="seconds" weight="152.921225" neutron="90" percentage="52.23" /> + </isotopes> + <family>Rare_Earth</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>64</number> + <name origin="Named after the Finnish chemist Johan Gadolin">Gadolinium</name> + <symbol>Gd</symbol> + <period>6</period> + <mass>157.25</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">1880</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity></electronaffinity> + <electronegativity>1.20</electronegativity> + <meltingpoint>1585</meltingpoint> + <boilingpoint>3545</boilingpoint> + <density>7.89</density> + <ionisationenergy> + <energy>6.14 </energy> + </ionisationenergy> + <radius> + <covalent>161</covalent> + <atomic>180.2</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f7 5d1 6s2</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="2.24" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="108000000000000" halflifeformat="years" weight="151.91979" neutron="88" percentage="0.2" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="0.24" spin="3/2-" magmoment="" halflife="20874240" halflifeformat="seconds" weight="152.92175" neutron="89" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="153.921" neutron="90" percentage="2.15" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="-0.27" halflife="" halflifeformat="seconds" weight="154.923" neutron="91" percentage="14.78" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="155.922" neutron="92" percentage="20.59" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="-0.36" halflife="" halflifeformat="seconds" weight="156.924" neutron="93" percentage="15.71" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="157.924" neutron="94" percentage="24.79" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.95" ecpercentage="" ecdecay="" spin="3/2-" magmoment="" halflife="66816" halflifeformat="seconds" weight="158.926386" neutron="95" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="159.927" neutron="96" percentage="21.79" /> + </isotopes> + <family>Rare_Earth</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>65</number> + <name origin="Named after the Swedish town of Ytterby">Terbium</name> + <symbol>Tb</symbol> + <period>6</period> + <mass>158.92534</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="K. G. Mosander">1843</date> + <biologicalmeaning>0</biologicalmeaning> + <group>1</group> + <electronaffinity></electronaffinity> + <electronegativity>1.1</electronegativity> + <meltingpoint>1629</meltingpoint> + <boilingpoint>3500</boilingpoint> + <density>8.25</density> + <ionisationenergy> + <energy>5.85 </energy> + </ionisationenergy> + <radius> + <covalent>159</covalent> + <atomic>178.2</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f9 6s2</orbits> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+1.95" halflife="" halflifeformat="seconds" weight="158.925344" neutron="94" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.72" ecpercentage="" ecdecay="" spin="3-" magmoment="+1.702" halflife="6246720" halflifeformat="seconds" weight="159.927165" neutron="95" percentage="" /> + </isotopes> + <oxydation>+3.+4</oxydation> + <family>Rare_Earth</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>66</number> + <name origin="Greek 'dysprositor' for 'difficult to reach'">Dysprosium</name> + <symbol>Dy</symbol> + <period>6</period> + <mass>162.50</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="F. E. Lecoq de Boisbaudran">1886</date> + <biologicalmeaning>0</biologicalmeaning> + <group>2</group> + <electronaffinity></electronaffinity> + <electronegativity>1.22</electronegativity> + <meltingpoint>1685</meltingpoint> + <boilingpoint>2840</boilingpoint> + <density>8.56</density> + <ionisationenergy> + <energy>5.93 </energy> + </ionisationenergy> + <radius> + <covalent>159</covalent> + <atomic>177.3</atomic> + <vdw></vdw> + </radius> + <orbits>Xe 4f10 6s2</orbits> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="155.92428" neutron="90" percentage="0.052" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="157.92440" neutron="92" percentage="0.090" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="159.92519" neutron="94" percentage="2.29" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-0.4805" halflife="" halflifeformat="seconds" weight="160.92693" neutron="95" percentage="18.88" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="161.92680" neutron="96" percentage="25.53" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2-" magmoment="+0.6726" halflife="" halflifeformat="seconds" weight="162.92873" neutron="97" percentage="24.97" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="163.92917" neutron="98" percentage="28.18" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.3" ecpercentage="" ecdecay="" spin="7/2+" magmoment="" halflife="8402.4" halflifeformat="seconds" weight="164.93170" neutron="98" percentage="" /> + </isotopes> + <oxydation>+3</oxydation> + <family>Rare_Earth</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>67</number> + <name origin="Latin 'holmia' for the old name of Stockholm">Holmium</name> + <symbol>Ho</symbol> + <period>6</period> + <mass>164.93032</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="J. L. Soret. P.T. Cleve">1878</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <electronaffinity></electronaffinity> + <electronegativity>1.23</electronegativity> + <meltingpoint>1747</meltingpoint> + <boilingpoint>2968</boilingpoint> + <density>8.78</density> + <ionisationenergy> + <energy>6.02 </energy> + </ionisationenergy> + <radius> + <covalent>158</covalent> + <atomic>176.6</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <orbits>Xe 4f11 6s2</orbits> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="+4.173" halflife="" halflifeformat="seconds" weight="164.93032" neutron="98" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.85" ecpercentage="" ecdecay="" spin="0-" magmoment="0" halflife="96840" halflifeformat="seconds" weight="165.93228" neutron="99" percentage="" /> + </isotopes> + <oxydation>+3</oxydation> + <family>Rare_Earth</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>68</number> + <name origin="Named ofter the Swedish town of Ytterby. Terbium and Ytterbium are also named after this town.">Erbium</name> + <symbol>Er</symbol> + <period>6</period> + <mass>167.259</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="K. G. Mosander">1843</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity></electronaffinity> + <electronegativity>1.24</electronegativity> + <meltingpoint>1802</meltingpoint> + <boilingpoint>3140</boilingpoint> + <density>9.05</density> + <ionisationenergy> + <energy>6.10 </energy> + </ionisationenergy> + <radius> + <covalent>157</covalent> + <atomic>175.7</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance></abundance> + <orbits>Xe 4f12 6s2</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="161.929" neutron="94" percentage="0.136" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="163.929" neutron="96" percentage="1.56" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="165.93029" neutron="98" percentage="33.41" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2+" magmoment="-0.5665" halflife="" halflifeformat="seconds" weight="166.93205" neutron="99" percentage="22.94" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="167.93237" neutron="100" percentage="27.07" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="169.935" neutron="102" percentage="14.88" /> + </isotopes> + <family>Rare_Earth</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>69</number> + <name origin="Named after the old name of Scandinavia. 'Thule'">Thulium</name> + <symbol>Tm</symbol> + <period>6</period> + <mass>168.93421</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="P. T. Cleve">1879</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <electronaffinity></electronaffinity> + <electronegativity>1.25</electronegativity> + <meltingpoint>1818</meltingpoint> + <boilingpoint>2223</boilingpoint> + <density>9.32</density> + <ionisationenergy> + <energy>6.18 </energy> + </ionisationenergy> + <radius> + <covalent>156</covalent> + <atomic>174.6</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance></abundance> + <orbits>Xe 4f13 6s2</orbits> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="-0.2316" halflife="" halflifeformat="seconds" weight="168.93421" neutron="100" percentage="100" /> + </isotopes> + <oxydation>+2.+3</oxydation> + <family>Rare_Earth</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>70</number> + <name origin="Like Terbium and Gadolinium. this is named after the Swedish town of Ytterby">Ytterbium</name> + <symbol>Yb</symbol> + <period>6</period> + <mass>173.04</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="J. Ch. Marignac">1878</date> + <biologicalmeaning>0</biologicalmeaning> + <group>6</group> + <electronaffinity></electronaffinity> + <electronegativity>1.1</electronegativity> + <meltingpoint>1092</meltingpoint> + <boilingpoint>1469</boilingpoint> + <density>9.32</density> + <ionisationenergy> + <energy>6.254 </energy> + </ionisationenergy> + <radius> + <covalent>170</covalent> + <atomic>194</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance></abundance> + <orbits>Xe 4f14 6s2</orbits> + <oxydation>+2.+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="" halflifeformat="seconds" weight="167.934" neutron="98" percentage="0.135" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="169.93476" neutron="100" percentage="3.03" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="+0.4919" halflife="" halflifeformat="seconds" weight="170.93632" neutron="101" percentage="14.31" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="171.93638" neutron="102" percentage="21.82" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2-" magmoment="-0.6776" halflife="" halflifeformat="seconds" weight="172.93821" neutron="103" percentage="16.13" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="173.93886" neutron="104" percentage="31.84" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.467" ecpercentage="" ecdecay="" spin="7/2-" magmoment="±0.3" halflife="244224" halflifeformat="seconds" weight="174.94127" neutron="105" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="175.94256" neutron="106" percentage="12.73" /> + </isotopes> + <family>Rare_Earth</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>71</number> + <name origin="Named after the Roman name 'Lutetia' for Paris">Lutetium</name> + <symbol>Lu</symbol> + <period>6</period> + <mass>174.967</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="C. Auer von Welsbach. G. Urbain">1907</date> + <biologicalmeaning>0</biologicalmeaning> + <group>7</group> + <electronaffinity></electronaffinity> + <electronegativity>1.27</electronegativity> + <meltingpoint>1936</meltingpoint> + <boilingpoint>3668</boilingpoint> + <density>9.84</density> + <ionisationenergy> + <energy>5.426 </energy> + </ionisationenergy> + <radius> + <covalent>156</covalent> + <atomic>173.4</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance></abundance> + <orbits>Xe 4f14 5d1 6s2</orbits> + <oxydation>+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.2327" halflife="" halflifeformat="seconds" weight="174.941" neutron="104" percentage="97.41" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7-" magmoment="3.19" halflife="" halflifeformat="seconds" weight="175.943" neutron="105" percentage="2.59" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.239" halflife="" halflifeformat="seconds" weight="176.943752" neutron="106" percentage="" /> + </isotopes> + <family>Rare_Earth</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>72</number> + <name origin="'Hafnia' is the old name of Kopenhagen (Denmark)">Hafnium</name> + <symbol>Hf</symbol> + <period>6</period> + <mass>178.49</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="D. Coster. G. Hevesy">1923</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <meltingpoint>2504</meltingpoint> + <boilingpoint>4875</boilingpoint> + <density>13.31</density> + <ionisationenergy> + <energy>7.0 </energy> + </ionisationenergy> + <radius> + <covalent>144</covalent> + <atomic>156.4</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance></abundance> + <orbits>Xe 4f14 5d2 6s2</orbits> + <oxydation>+5</oxydation> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="2.55" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="2000000000000000" halflifeformat="years" weight="173.94004" neutron="102" percentage="0.18" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.59" spin="5/2-" magmoment="0.70" halflife="6048000" halflifeformat="seconds" weight="174.94151" neutron="103" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="175.94140" neutron="104" percentage="5.21" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="+0.7935" halflife="" halflifeformat="seconds" weight="176.94322" neutron="105" percentage="18.6" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="177.94370" neutron="106" percentage="27.3" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="-0.6409" halflife="" halflifeformat="seconds" weight="178.94581" neutron="107" percentage="13.63" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="179.94655" neutron="108" percentage="35.1" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>73</number> + <name origin="Named after the Greek myth of Tantalos">Tantalum</name> + <symbol>Ta</symbol> + <period>6</period> + <mass>180.9479</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="A. Ekeberg">1802</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <electronaffinity>-31</electronaffinity> + <electronegativity>1.5</electronegativity> + <meltingpoint>3293</meltingpoint> + <boilingpoint>5730</boilingpoint> + <density>16.68</density> + <ionisationenergy> + <energy>7.89 </energy> + </ionisationenergy> + <radius> + <covalent>134</covalent> + <atomic>143</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance></abundance> + <orbits>Xe 4f14 5d3 6s2</orbits> + <oxydation>+3.+5</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="14.0" betaminusdecay="" ecpercentage="86.0" ecdecay="" spin="9-" magmoment="" halflife="10000000000000" halflifeformat="years" weight="179.947462" neutron="107" percentage="0.012" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2+" magmoment="+2.370" halflife="" halflifeformat="seconds" weight="180.947992" neutron="108" percentage="99.998" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.811" ecpercentage="" ecdecay="" spin="3-" magmoment="2.6" halflife="9892800" halflifeformat="seconds" weight="181.950149" neutron="109" percentage="" /> + </isotopes> + <family>Transition</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>74</number> + <name origin="'tung sten' means 'heavy stone' in Swedish. The old name (and thus the symbol 'W') was Wolfram. named after a mineral">Tungsten</name> + <symbol>W</symbol> + <period>6</period> + <mass>183.84</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="C. W. Scheele">1783</date> + <biologicalmeaning>5</biologicalmeaning> + <group>6</group> + <electronaffinity>-79</electronaffinity> + <electronegativity>2.36</electronegativity> + <meltingpoint>3695</meltingpoint> + <boilingpoint>5825</boilingpoint> + <density>19.26</density> + <ionisationenergy> + <energy>7.98 </energy> + </ionisationenergy> + <radius> + <covalent>130</covalent> + <atomic>137</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance></abundance> + <orbits>Xe 4f14 5d4 6s2</orbits> + <oxydation>(+4). +6</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="179.947" neutron="106" percentage="0.122" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.19" spin="9/2+" magmoment="" halflife="10471680" halflifeformat="seconds" weight="180.94820" neutron="107" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0+" halflife="" halflifeformat="seconds" weight="181.94820" neutron="108" percentage="26.3" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="+0.1177847" halflife="" halflifeformat="seconds" weight="182.950220" neutron="109" percentage="14.28" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="183.950928" neutron="110" percentage="30.7" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.432" ecpercentage="" ecdecay="" spin="3/2-" magmoment="" halflife="4129920" halflifeformat="seconds" weight="184.953416" neutron="111" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="185.954357" neutron="112" percentage="29.17" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.321" ecpercentage="" ecdecay="" spin="3/2-" magmoment="0.688" halflife="2064960" halflifeformat="seconds" weight="186.957153" neutron="113" percentage="" /> + </isotopes> + <family>Transition</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>75</number> + <name origin="Named after the German river Rhine (latin 'Rhenium')">Rhenium</name> + <symbol>Re</symbol> + <period>6</period> + <mass>186.207</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="W. Noddack. I. Tacke-Noddack. O. Berg">1925</date> + <biologicalmeaning>0</biologicalmeaning> + <group>7</group> + <electronaffinity>-14</electronaffinity> + <electronegativity>1.9</electronegativity> + <meltingpoint>3455</meltingpoint> + <boilingpoint>5870</boilingpoint> + <density>21.03</density> + <ionisationenergy> + <energy>7.88</energy> + </ionisationenergy> + <radius> + <covalent>159</covalent> + <atomic>135</atomic> + <vdw></vdw> + <bondxx>274.1</bondxx> + <ionic charge="+4">63</ionic> + </radius> + <abundance>0.0007</abundance> + <orbits>Xe 4f14 5d5 6s2</orbits> + <oxydation>+7.+2.+4</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+3.172" halflife="" halflifeformat="seconds" weight="184.952951" neutron="110" percentage="37.4" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="93.1" betaminusdecay="1.071" ecpercentage="6.9" ecdecay="" spin="1-" magmoment="+1.739" halflife="324000" halflifeformat="seconds" weight="185.954984" neutron="111" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.00251" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+3.2197" halflife="43500000000" halflifeformat="years" weight="186.955744" neutron="112" percentage="62.6" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="2.12" ecpercentage="" ecdecay="" spin="1-" magmoment="+1.788" halflife="61128" halflifeformat="seconds" weight="187.958106" neutron="113" percentage="" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>76</number> + <name origin="Greek for 'smell'. Its oxides smell strongly like radishes">Osmium</name> + <symbol>Os</symbol> + <period>6</period> + <mass>190.23</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="S. Tennant">1804</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>-106</electronaffinity> + <electronegativity>2.2</electronegativity> + <meltingpoint>3300</meltingpoint> + <boilingpoint>5300</boilingpoint> + <density>22.61</density> + <ionisationenergy> + <energy>8.7 </energy> + </ionisationenergy> + <radius> + <covalent>128</covalent> + <atomic>130</atomic> + <vdw></vdw> + <bondxx>267.5</bondxx> + <ionic charge="+4">63</ionic> + </radius> + <abundance>0.005</abundance> + <orbits>Xe 4f14 5d6 6s2</orbits> + <oxydation>+4.(+2.+3.+6.+8)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="183.953" neutron="108" percentage="0.018" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.98" spin="1/2-" magmoment="" halflife="8087040" halflifeformat="seconds" weight="184.954041" neutron="109" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="2000000000000000" halflifeformat="years" weight="185.953830" neutron="110" percentage="1.58" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="+0.06465" halflife="" halflifeformat="seconds" weight="186.955741" neutron="111" percentage="1.59" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="187.955860" neutron="112" percentage="13.3" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.659933" halflife="" halflifeformat="seconds" weight="188.958137" neutron="113" percentage="16.1" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="189.958436" neutron="114" percentage="26.4" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.313" ecpercentage="" ecdecay="" spin="9/2-" magmoment="" halflife="13.30560" halflifeformat="seconds" weight="190.960920" neutron="115" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="191.961476" neutron="116" percentage="41" /> + </isotopes> + <family>Transition</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>77</number> + <name origin="Greek 'iris' for 'rainbow'">Iridium</name> + <symbol>Ir</symbol> + <period>6</period> + <mass>192.217</mass> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="S. Tennant">1804</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>-151</electronaffinity> + <electronegativity>2.20</electronegativity> + <meltingpoint>2720</meltingpoint> + <boilingpoint>4700</boilingpoint> + <density>22.65</density> + <ionisationenergy> + <energy>9.1 </energy> + </ionisationenergy> + <radius> + <covalent>137</covalent> + <atomic>135</atomic> + <vdw></vdw> + <bondxx>271.4</bondxx> + <ionic charge="+4">63</ionic> + </radius> + <abundance>0.001</abundance> + <orbits>Xe 4f14 5d7 6s2</orbits> + <oxydation>+1.+4.(+2.+3.+6)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.1461" halflife="" halflifeformat="seconds" weight="190.960584" neutron="114" percentage="38.5" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="4.6" betaplusdecay="1.2" betaminuspercentage="95.4" betaminusdecay="1.454" ecpercentage="4.6" ecdecay="" spin="4-" magmoment="+1.880" halflife="6378998.4" halflifeformat="seconds" weight="191.962580" neutron="115" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.1591" halflife="" halflifeformat="seconds" weight="192.962917" neutron="116" percentage="61.5" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>78</number> + <name origin="Spanish 'platina' means 'small silver'">Platinum</name> + <symbol>Pt</symbol> + <period>6</period> + <mass>195.078</mass> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="A. de Ulloa">1735</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>-205</electronaffinity> + <electronegativity>2.28</electronegativity> + <meltingpoint>2042.1</meltingpoint> + <boilingpoint>4100</boilingpoint> + <density>21.450</density> + <ionisationenergy> + <energy>9.0 </energy> + </ionisationenergy> + <radius> + <covalent>128</covalent> + <atomic>135</atomic> + <vdw>175</vdw> + <bondxx>277.5</bondxx> + <ionic charge="+2">80</ionic> + </radius> + <abundance>0.01</abundance> + <orbits>Xe 4f14 5d9 6s1</orbits> + <oxydation>+2.+4</oxydation> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="3.18" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="650000000000" halflifeformat="years" weight="189.959917" neutron="112" percentage="0.0127" /> + <isotope alphapercentage="100.0" alphadecay="2.6" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="1000000000000000" halflifeformat="years" weight="191.961019" neutron="114" percentage="0.78" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="193.962655" neutron="116" percentage="32.9" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="+0.60949" halflife="" halflifeformat="seconds" weight="194.964766" neutron="117" percentage="33.8" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="195.9650" neutron="118" percentage="25.3" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.75" ecpercentage="" ecdecay="" spin="1/2-" magmoment="-0.51" halflife="65880" halflifeformat="seconds" weight="196.967315" neutron="119" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="197.967869" neutron="120" percentage="7.2" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>79</number> + <name origin="Latin 'aurum'. named after Aurora. the goddess of sunrise">Gold</name> + <symbol>Au</symbol> + <period>6</period> + <mass>196.96654</mass> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>0</biologicalmeaning> + <group>1</group> + <electronaffinity>-223</electronaffinity> + <electronegativity>2.54</electronegativity> + <meltingpoint>1337.58</meltingpoint> + <boilingpoint>3130</boilingpoint> + <density>19.32</density> + <ionisationenergy> + <energy>9.225 </energy> + </ionisationenergy> + <radius> + <covalent>144.2</covalent> + <atomic>135</atomic> + <vdw>166</vdw> + <bondxx>288.4</bondxx> + <ionic charge="+1">137</ionic> + </radius> + <abundance>0.004</abundance> + <orbits>Xe 4f14 5d10 6s1</orbits> + <oxydation>(+1).+3</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.230" spin="3/2+" magmoment="±0.148" halflife="16078176" halflifeformat="seconds" weight="194.965013" neutron="116" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.1457" halflife="" halflifeformat="seconds" weight="196.966543" neutron="118" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.372" ecpercentage="" ecdecay="" spin="2-" magmoment="+0.5934" halflife="232718.4" halflifeformat="seconds" weight="197.968217" neutron="119" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.453" ecpercentage="" ecdecay="" spin="3/2+" magmoment="+0.2715" halflife="271209.6" halflifeformat="seconds" weight="198.968740" neutron="120" percentage="" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>80</number> + <name origin="Graeco-Latin 'hydrargyrum' for 'liquid silver'">Mercury</name> + <symbol>Hg</symbol> + <period>6</period> + <mass>200.59</mass> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>0</biologicalmeaning> + <group>2</group> + <electronaffinity>61</electronaffinity> + <electronegativity>2.00</electronegativity> + <meltingpoint>234.31</meltingpoint> + <boilingpoint>629.88</boilingpoint> + <density>13.55</density> + <ionisationenergy> + <energy>10.437 </energy> + </ionisationenergy> + <radius> + <covalent>160</covalent> + <atomic>150</atomic> + <vdw>155</vdw> + <bondxx>300.5</bondxx> + <ionic charge="+2">102</ionic> + </radius> + <abundance>0.08</abundance> + <orbits>Xe 4f14 5d10 6s2</orbits> + <oxydation>(+1).+2</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="195.965807" neutron="116" percentage="0.146" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="100.0" ecdecay="0.42" spin="1/2-" magmoment="+0.5274" halflife="230904" halflifeformat="seconds" weight="196.967187" neutron="117" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="197.966743" neutron="118" percentage="10.02" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2-" magmoment="+0.5058851" halflife="" halflifeformat="seconds" weight="198.968254" neutron="119" percentage="16.84" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="199.968300" neutron="120" percentage="23.13" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="-0.560225" halflife="" halflifeformat="seconds" weight="200.970277" neutron="121" percentage="13.22" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="201.970617" neutron="122" percentage="29.80" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.492" ecpercentage="" ecdecay="" spin="5/2-" magmoment="+0.8489" halflife="4027276.8" halflifeformat="seconds" weight="202.972848" neutron="123" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="" halflifeformat="seconds" weight="203.973467" neutron="124" percentage="6.85" /> + </isotopes> + <family>Transition</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>81</number> + <name origin="Greek 'tallos' for 'young twig'">Thallium</name> + <symbol>Tl</symbol> + <period>6</period> + <mass>204.3833</mass> + <block>p</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="W. Crookes">1861</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <electronaffinity>-20</electronaffinity> + <electronegativity>2.04</electronegativity> + <meltingpoint>577</meltingpoint> + <boilingpoint>1746</boilingpoint> + <density>11.85</density> + <ionisationenergy> + <energy>6.108</energy> + <energy>20.4</energy> + <energy>29.8</energy> + </ionisationenergy> + <radius> + <covalent>170.4</covalent> + <atomic>190</atomic> + <vdw>196</vdw> + <ionic charge="+1">150</ionic> + <bondxx>340.8</bondxx> + </radius> + <abundance>0.7</abundance> + <orbits>Xe 4f14 5d10 6s2 6p1</orbits> + <oxydation>+1.(+3)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="+1.622257" halflife="" halflifeformat="seconds" weight="202.972320" neutron="122" percentage="29.52" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="97.43" betaminusdecay="0.763" ecpercentage="2.57" ecdecay="0.345" spin="2-" magmoment="-0.06" halflife="3.78" halflifeformat="years" weight="203.97384" neutron="123" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="+1.6382134" halflife="" halflifeformat="seconds" weight="204.974401" neutron="124" percentage="70.48" /> + </isotopes> + <family>Other_Metal</family> + <crystalstructure>hdp</crystalstructure> + </element> + <element> + <number>82</number> + <name origin="Latin 'plumbum' for Lead">Lead</name> + <symbol>Pb</symbol> + <period>6</period> + <mass>207.2</mass> + <block>p</block> + <acidicbehaviour>2</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>3</biologicalmeaning> + <group>4</group> + <electronaffinity>-35</electronaffinity> + <electronegativity>2.33</electronegativity> + <meltingpoint>600.65</meltingpoint> + <boilingpoint>2023</boilingpoint> + <density>11.34</density> + <ionisationenergy> + <energy>7.416 </energy> + </ionisationenergy> + <radius> + <covalent>147</covalent> + <atomic>180</atomic> + <vdw>202</vdw> + <bondxx>350.0</bondxx> + <ionic charge="+2">118</ionic> + </radius> + <abundance>13</abundance> + <orbits>Xe 4f14 5d10 6s2 6p2</orbits> + <oxydation>+2.(+4)</oxydation> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0" magmoment="" halflife="" halflifeformat="seconds" weight="203.97302" neutron="122" percentage="1.4" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0" magmoment="" halflife="" halflifeformat="seconds" weight="205.974440" neutron="124" percentage="24.1" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2" magmoment="+0.5926" halflife="" halflifeformat="seconds" weight="206.975872" neutron="125" percentage="22.1" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0" magmoment="" halflife="" halflifeformat="seconds" weight="207.976627" neutron="126" percentage="52.4" /> + </isotopes> + <family>Other_Metal</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>83</number> + <name origin="The old name of Bismuth is 'Wismut'. This stood for 'white mass'">Bismuth</name> + <symbol>Bi</symbol> + <period>6</period> + <mass>208.98038</mass> + <block>p</block> + <acidicbehaviour>0</acidicbehaviour> + <date scientist="">0</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <electronaffinity>-91</electronaffinity> + <electronegativity>2.02</electronegativity> + <meltingpoint>544.59</meltingpoint> + <boilingpoint>1837</boilingpoint> + <density>9.80</density> + <ionisationenergy> + <energy>7.289 </energy> + </ionisationenergy> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2" magmoment="+4.11" halflife="" halflifeformat="seconds" weight="208.980347" neutron="126" percentage="100.0" /> + <isotope alphapercentage="100.0" alphadecay="5.04" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.16" ecpercentage="" ecdecay="" spin="1" magmoment="-0.044" halflife="432864.0" halflifeformat="seconds" weight="209.984095" neutron="127" percentage="" /> + </isotopes> + <radius> + <covalent>155</covalent> + <atomic>160</atomic> + <vdw></vdw> + <ionic charge="+5">74</ionic> + <ionic charge="+3">102</ionic> + <bondxx>309</bondxx> + </radius> + <abundance>13</abundance> + <orbits>Xe 4f14 5d10 6s2 6p3</orbits> + <oxydation>+3.(+5)</oxydation> + <family>Other_Metal</family> + <crystalstructure>rh</crystalstructure> + </element> + <element> + <number>84</number> + <name origin="Named after Poland to honor Marie Curie">Polonium</name> + <symbol>Po</symbol> + <period>6</period> + <mass>208.9824</mass> + <block>p</block> + <acidicbehaviour>2</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="M. Sklodowska-Curie. P. Curie">1898</date> + <biologicalmeaning>0</biologicalmeaning> + <group>6</group> + <electronaffinity>-183</electronaffinity> + <electronegativity>2.0</electronegativity> + <meltingpoint>527</meltingpoint> + <boilingpoint></boilingpoint> + <density>9.20</density> + <ionisationenergy> + <energy>8.42 </energy> + </ionisationenergy> + <isotopes> + <isotope alphapercentage="99.74" alphadecay="4.976" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="0.26" ecdecay="" spin="1/2-" magmoment="+0.77" halflife="102" halflifeformat="years" weight="208.9824" neutron="125" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="5.407" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="11955686.4" halflifeformat="seconds" weight="209.982848" neutron="126" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="7.594" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="" halflife="0.516" halflifeformat="seconds" weight="210.986627" neutron="127" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="0.000000299" halflifeformat="seconds" weight="211.9888" neutron="128" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="0.0001643" halflifeformat="seconds" weight="213.9952" neutron="130" percentage="" /> + <isotope alphapercentage="99.9998" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="0.0002" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2+" magmoment="" halflife="0.001781" halflifeformat="seconds" weight="214.9994" neutron="131" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="6.906" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="0.145" halflifeformat="seconds" weight="216.001889" neutron="132" percentage="" /> + <isotope alphapercentage="99.98" alphadecay="6.114" betapluspercentage="" betaplusdecay="" betaminuspercentage="0.02" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="186" halflifeformat="seconds" weight="218.0089" neutron="134" percentage="" /> + </isotopes> + <radius> + <covalent>167.5</covalent> + <atomic>190</atomic> + <vdw></vdw> + <bondxx>334.5</bondxx> + <ionic charge="+6">97</ionic> + </radius> + <abundance>0</abundance> + <orbits>Xe 4f14 5d10 6s2 6p4</orbits> + <oxydation>(+2).+4.(+6)</oxydation> + <family>Metalloids</family> + <crystalstructure>mono</crystalstructure> + </element> + <element> + <number>85</number> + <name origin="Greek 'astator' for 'changing'">Astatine</name> + <symbol>At</symbol> + <period>6</period> + <mass>209.9871</mass> + <block>p</block> + <acidicbehaviour>3</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="D.R. Corson. K.R. McKenzie. E. Segre">1940</date> + <biologicalmeaning>0</biologicalmeaning> + <group>7</group> + <electronaffinity>-270</electronaffinity> + <electronegativity>2.2</electronegativity> + <meltingpoint>575</meltingpoint> + <boilingpoint>610</boilingpoint> + <density></density> + <ionisationenergy> + <energy>9.5 </energy> + </ionisationenergy> + <isotopes> + <isotope alphapercentage="0.18" alphadecay="5.63" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="99.82" ecdecay="3.98" spin="5+" magmoment="" halflife="29160" halflifeformat="seconds" weight="209.987126" neutron="125" percentage="" /> + <isotope alphapercentage="41.7" alphadecay="5.981" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="58.3" ecdecay="0.784" spin="9/2-" magmoment="" halflife="25970.4" halflifeformat="seconds" weight="210.987469" neutron="126" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2-" magmoment="" halflife="0.0001" halflifeformat="seconds" weight="214.99864" neutron="130" percentage="" /> + <isotope alphapercentage="100" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1-" magmoment="" halflife="0.0003" halflifeformat="seconds" weight="216.0024" neutron="131" percentage="" /> + <isotope alphapercentage="99.99" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="0.01" betaminusdecay="" ecpercentage="" ecdecay="" spin="9/2-" magmoment="" halflife="1938" halflifeformat="seconds" weight="217.00471" neutron="133" percentage="" /> + <isotope alphapercentage="99.9" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="0.1" betaminusdecay="" ecpercentage="" ecdecay="" spin="2-" magmoment="" halflife="1.6" halflifeformat="seconds" weight="118.00868" neutron="134" percentage="" /> + </isotopes> + <radius> + <covalent></covalent> + <atomic>127</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <orbits>Xe 4f14 5d10 6s2 6p5</orbits> + <oxydation>-1.(1.3.5.7)</oxydation> + <family>Halogene</family> + </element> + <element> + <number>86</number> + <name origin="Named after Radium. It ends with 'on' to make it clear that it is a noble gas">Radon</name> + <symbol>Rn</symbol> + <period>6</period> + <mass>222.0176</mass> + <block>p</block> + <acidicbehaviour>1</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="E. Dorn">1898</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity>41</electronaffinity> + <electronegativity></electronegativity> + <meltingpoint>202</meltingpoint> + <boilingpoint>211.4</boilingpoint> + <density>9.23</density> + <ionisationenergy> + <energy>10.748 </energy> + </ionisationenergy> + <radius> + <covalent>145</covalent> + <atomic>120</atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <orbits>Xe 4f14 5d10 6s2 6p6</orbits> + <oxydation>2</oxydation> + <family>Noblegas</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>87</number> + <name origin="Named after France to honor Marguerite Perey">Francium</name> + <symbol>Fr</symbol> + <period>7</period> + <mass>223.0197</mass> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="M. Perey">1939</date> + <biologicalmeaning>0</biologicalmeaning> + <group>1</group> + <electronaffinity>-44</electronaffinity> + <electronegativity>0.7</electronegativity> + <meltingpoint>300</meltingpoint> + <boilingpoint>950</boilingpoint> + <density></density> + <ionisationenergy> + <energy>4.0 </energy> + </ionisationenergy> + <radius> + <covalent>270</covalent> + <atomic></atomic> + <vdw></vdw> + <ionic charge="+1">180</ionic> + <bondxx></bondxx> + </radius> + <abundance></abundance> + <orbits>Rn 7s1</orbits> + <oxydation>+1</oxydation> + <family>Alkali_Earth</family> + </element> + <element> + <number>88</number> + <name origin="Latin 'radius' for 'beam', as it is radioactive">Radium</name> + <symbol>Ra</symbol> + <period>7</period> + <mass>226.0254</mass> + <block>s</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="M. Sklodowska-Curie. P. Curie">1898</date> + <biologicalmeaning>0</biologicalmeaning> + <group>2</group> + <electronaffinity></electronaffinity> + <electronegativity>0.89</electronegativity> + <meltingpoint>973</meltingpoint> + <boilingpoint>1413</boilingpoint> + <density>5.50</density> + <ionisationenergy> + <energy>5.279</energy> + </ionisationenergy> + <radius> + <covalent>223</covalent> + <atomic>215</atomic> + <vdw></vdw> + <ionic charge="+2">143</ionic> + <bondxx>445.8</bondxx> + </radius> + <abundance>0</abundance> + <orbits>Rn 7s2</orbits> + <oxydation>+2</oxydation> + <family>Alkaline_Earth</family> + <crystalstructure>bcc</crystalstructure> + </element> + <element> + <number>89</number> + <name origin="Greek 'aktis' for 'beam' - actinium is radioactive">Actinium</name> + <symbol>Ac</symbol> + <period>7</period> + <mass>227.0278</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="A.L. Debierne">1899</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <electronaffinity></electronaffinity> + <electronegativity>1.1</electronegativity> + <meltingpoint>1324</meltingpoint> + <boilingpoint>3470</boilingpoint> + <density>10.07</density> + <ionisationenergy> + <energy>6.9 </energy> + </ionisationenergy> + <radius> + <covalent>187.8</covalent> + <atomic>195</atomic> + <vdw></vdw> + <ionic charge="+3">118</ionic> + <bondxx>375.6</bondxx> + </radius> + <abundance>0</abundance> + <orbits>Rn 6d1 7s2</orbits> + <oxydation>(+2).+3</oxydation> + <family>Rare_Earth</family> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>90</number> + <name origin="Named after the German god of thunder: Thor">Thorium</name> + <symbol>Th</symbol> + <period>7</period> + <mass>232.0381</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="J. J. Berzelius">1828</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <meltingpoint>2028</meltingpoint> + <boilingpoint>5060</boilingpoint> + <density>11.72</density> + <ionisationenergy> + <energy>6.95 </energy> + </ionisationenergy> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="6.145" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2+" magmoment="" halflife="1617235.2" halflifeformat="seconds" weight="227.02770" neutron="137" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="5.52" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="1.9131" halflifeformat="years" weight="228.02872" neutron="138" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="5.17" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+0.46" halflife="7340" halflifeformat="years" weight="229.03176" neutron="139" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="4.77" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="75380" halflifeformat="years" weight="230.03313" neutron="140" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.389" ecpercentage="" ecdecay="" spin="5/2+" magmoment="" halflife="91872" halflifeformat="seconds" weight="231.03630" neutron="141" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="4.081" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="14000000000" halflifeformat="years" weight="232.03805" neutron="142" percentage="100" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.27" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="1338" halflifeformat="seconds" weight="234.036593" neutron="144" percentage="" /> + </isotopes> + <radius> + <covalent></covalent> + <atomic>179.8</atomic> + <vdw></vdw> + <ionic charge="+4">100</ionic> + <bondxx>359.5</bondxx> + </radius> + <abundance>12</abundance> + <oxydation>+3.+4</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 6d2 7s2</orbits> + <crystalstructure>ccp</crystalstructure> + </element> + <element> + <number>91</number> + <name origin="Greek 'protos' for 'ancester'. Protactinium is before Actinium in the periodic table.">Protactinium</name> + <symbol>Pa</symbol> + <period>7</period> + <mass>231.03588</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="O. Hahn. L. Meitern. W. Wollaston">1917</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <electronaffinity></electronaffinity> + <electronegativity>1.5</electronegativity> + <meltingpoint>1845</meltingpoint> + <boilingpoint>4300</boilingpoint> + <density>15.37</density> + <radius> + <covalent></covalent> + <atomic>180.6</atomic> + <vdw></vdw> + <ionic charge="+4">98</ionic> + <ionic charge="+5">89</ionic> + <ionic charge="+3">113</ionic> + <bondxx>321.2</bondxx> + </radius> + <abundance>12</abundance> + <oxydation>+4.+5</oxydation> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="5.148" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="3/2-" magmoment="±2.01" halflife="32760" halflifeformat="years" weight="231.03588" neutron="140" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.34" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+3.5" halflife="113184" halflifeformat="seconds" weight="232.03857" neutron="141" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.572" ecpercentage="" ecdecay="" spin="3/2-" magmoment="+3.5" halflife="2329948.8" halflifeformat="seconds" weight="233.04024" neutron="142" percentage="" /> + </isotopes> + <family>Rare_Earth</family> + <orbits>Rn 5f2 6d1 7s2</orbits> + <crystalstructure>own</crystalstructure> + </element> + <element> + <number>92</number> + <name origin="Greek 'ouranos' for 'heaven'. Named after the planet Uranus">Uranium</name> + <symbol>U</symbol> + <period>7</period> + <mass>238.02891</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="M. M. Klaproth">1789</date> + <biologicalmeaning>0</biologicalmeaning> + <group>6</group> + <electronaffinity></electronaffinity> + <electronegativity>1.38</electronegativity> + <meltingpoint>1408</meltingpoint> + <boilingpoint>4407</boilingpoint> + <density>18.97</density> + <ionisationenergy> + <energy>6.08 </energy> + </ionisationenergy> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="5.41" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="73.6" halflifeformat="years" weight="232.03713" neutron="140" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="4.91" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="+0.55" halflife="159200" halflifeformat="years" weight="233.03963" neutron="141" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="4.856" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="245000" halflifeformat="years" weight="234.04095" neutron="142" percentage="0.005" /> + <isotope alphapercentage="100.0" alphadecay="4.6793" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="7/2-" magmoment="-0.35" halflife="703800000" halflifeformat="years" weight="235.04392" neutron="143" percentage="0.7200" /> + <isotope alphapercentage="100.0" alphadecay="4.569" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="23415000" halflifeformat="years" weight="236.04556" neutron="144" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.52" ecpercentage="" ecdecay="" spin="1/2+" magmoment="" halflife="583200" halflifeformat="seconds" weight="237.04872" neutron="145" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="4.039" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="4468000000" halflifeformat="years" weight="238.05078" neutron="146" percentage="99.2748" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.5" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="50760" halflifeformat="seconds" weight="240.05659" neutron="148" percentage="" /> + </isotopes> + <radius> + <covalent>138.5</covalent> + <atomic>175</atomic> + <vdw>186</vdw> + <ionic charge="+4">97</ionic> + <ionic charge="+6">80</ionic> + <ionic charge="+6">73</ionic> + <bondxx>277</bondxx> + </radius> + <abundance>2.3</abundance> + <oxydation>+3.+4.+5.+6.+7</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f3 6d1 7s2</orbits> + <crystalstructure>own</crystalstructure> + </element> + <element> + <number>93</number> + <name origin="Named after the planet Neptune.">Neptunium</name> + <symbol>Np</symbol> + <period>7</period> + <mass>237.0482</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="E. M. McMillan. P. Aberson">1940</date> + <biologicalmeaning>0</biologicalmeaning> + <group>7</group> + <electronaffinity></electronaffinity> + <electronegativity>1.36</electronegativity> + <meltingpoint>912</meltingpoint> + <boilingpoint>4175</boilingpoint> + <density>20.48</density> + <ionisationenergy> + </ionisationenergy> + <radius> + <covalent>131</covalent> + <atomic>175</atomic> + <vdw></vdw> + <ionic charge="+4">95</ionic> + <bondxx>262</bondxx> + </radius> + <abundance>0</abundance> + <oxydation>+4.+3.+5.+7</oxydation> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="4.96" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2+" magmoment="" halflife="2140000" halflifeformat="years" weight="237.04817" neutron="144" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="1.29" ecpercentage="" ecdecay="" spin="2+" magmoment="" halflife="182908.8" halflifeformat="seconds" weight="238.05094" neutron="145" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.72" ecpercentage="" ecdecay="" spin="5/2+" magmoment="" halflife="203472" halflifeformat="seconds" weight="239.05293" neutron="146" percentage="" /> + </isotopes> + <family>Rare_Earth</family> + <orbits>Rn 5f4 6d1 7s2</orbits> + <crystalstructure>own</crystalstructure> + </element> + <element> + <number>94</number> + <name origin="Named after the planet Pluto.">Plutonium</name> + <symbol>Pu</symbol> + <period>7</period> + <mass>244.0642</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <date scientist="G.T. Seaborg. E.M. McMillan. J.W. Kennedy. A.C. Wahl">1940</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity></electronaffinity> + <electronegativity>1.28</electronegativity> + <meltingpoint>913</meltingpoint> + <boilingpoint>3505</boilingpoint> + <density>19.74</density> + <ionisationenergy> + <energy>5.8 </energy> + </ionisationenergy> + <radius> + <covalent>151</covalent> + <atomic>175</atomic> + <vdw></vdw> + <ionic charge="+4">80</ionic> + <bondxx>302.6</bondxx> + </radius> + <abundance>0</abundance> + <oxydation>+3.+4.+5.+6.+7</oxydation> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="5.87" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="2.87" halflifeformat="years" weight="236.04603" neutron="142" percentage="" /> + <isotope alphapercentage="0.004" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="99.996" ecdecay="0.22" spin="7/2-" magmoment="" halflife="3905280" halflifeformat="seconds" weight="237.04841" neutron="143" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="5.59" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="0" halflife="87.74" halflifeformat="years" weight="238.04955" neutron="144" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="5.24" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="1/2+" magmoment="+0.203" halflife="24119" halflifeformat="years" weight="239.05216" neutron="145" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="5.26" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="6563" halflifeformat="years" weight="240.05381" neutron="146" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="100.0" betaminusdecay="0.02" ecpercentage="" ecdecay="" spin="5/2+" magmoment="-0.683" halflife="14.35" halflifeformat="years" weight="241.05685" neutron="147" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="4.983" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="0+" magmoment="" halflife="373300" halflifeformat="years" weight="242.05874" neutron="148" percentage="" /> + </isotopes> + <family>Rare_Earth</family> + <orbits>Rn 5f6 7s2</orbits> + <crystalstructure>own</crystalstructure> + </element> + <element> + <number>95</number> + <name origin="Named after America.">Americium</name> + <symbol>Am</symbol> + <period>7</period> + <mass>243.0614</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="G.T. Seaborg. L.O. Morgan. R.A. James. A. Ghiors">1945</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <meltingpoint>1449</meltingpoint> + <boilingpoint>2880</boilingpoint> + <density>13.67</density> + <ionisationenergy> + <energy>6.0</energy> + </ionisationenergy> + <radius> + <covalent>184</covalent> + <atomic>175</atomic> + <vdw></vdw> + <ionic charge="+3">100</ionic> + <bondxx>345.0</bondxx> + </radius> + <abundance>0</abundance> + <oxydation>+2.+3.+4.+5.+6</oxydation> + <isotopes> + <isotope alphapercentage="100.0" alphadecay="5.637" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2-" magmoment="+1.61" halflife="432.7" halflifeformat="years" weight="241.05682" neutron="146" percentage="" /> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="82.7" betaminusdecay="0.67" ecpercentage="17.3" ecdecay="0.73" spin="1-" magmoment="" halflife="57672" halflifeformat="seconds" weight="242.05954" neutron="147" percentage="" /> + <isotope alphapercentage="100.0" alphadecay="5.439" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="5/2-" magmoment="" halflife="7380" halflifeformat="years" weight="243.06137" neutron="148" percentage="" /> + </isotopes> + <family>Rare_Earth</family> + <orbits>Rn 5f7 7s2</orbits> + </element> + <element> + <number>96</number> + <name origin="Named after Marie Curie.">Curium</name> + <symbol>Cm</symbol> + <period>7</period> + <mass>247.0703</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="G. T. Seaborg. R. A. James. A. Ghiors">1944</date> + <biologicalmeaning>0</biologicalmeaning> + <group>8</group> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <ionic charge="+3">98</ionic> + <bondxx>347.7</bondxx> + </radius> + <abundance>0</abundance> + <meltingpoint>1620</meltingpoint> + <boilingpoint></boilingpoint> + <density>13.51</density> + <oxydation>+3.+4</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f7 6d1 7s2</orbits> + </element> + <element> + <number>97</number> + <name origin="Named after the town Berkeley where it was discovered.">Berkelium</name> + <symbol>Bk</symbol> + <period>7</period> + <mass>247.0703</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <ionic charge="+3">98</ionic> + <bondxx>339.8</bondxx> + </radius> + <abundance>0</abundance> + <date scientist="G. T. Seaborg. A. Ghiors. S.G. Thompson">1949</date> + <biologicalmeaning>0</biologicalmeaning> + <group>1</group> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <meltingpoint>1258</meltingpoint> + <boilingpoint></boilingpoint> + <density>13.25</density> + <oxydation>+3.+4</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f9 7s2</orbits> + </element> + <element> + <number>98</number> + <name origin="Named after the US-State of California.">Californium</name> + <symbol>Cf</symbol> + <period>7</period> + <mass>251.0796</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="G. T. Seaborg. A Ghiors. S. G. Thompson">1950</date> + <biologicalmeaning>0</biologicalmeaning> + <group>2</group> + <electronaffinity></electronaffinity> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <ionic charge="+3">98</ionic> + <bondxx>337.7</bondxx> + </radius> + <abundance>0</abundance> + <electronegativity>1.3</electronegativity> + <meltingpoint>1172</meltingpoint> + <boilingpoint></boilingpoint> + <density>15.1</density> + <oxydation>+3.+4</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f10 7s2</orbits> + </element> + <element> + <number>99</number> + <name origin="Named after the scientist Albert Einstein.">Einsteinium</name> + <symbol>Es</symbol> + <period>7</period> + <mass>252.0829</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="G. T. Seaborg et al.">1952</date> + <biologicalmeaning>0</biologicalmeaning> + <group>3</group> + <radius> + <covalent></covalent> + <atomic>186</atomic> + <vdw></vdw> + <ionic charge="+3">98</ionic> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="40780800" halflifeformat="seconds" weight="" neutron="153" percentage="" /> + </isotopes> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <meltingpoint>1130</meltingpoint> + <oxydation>+2.+3.+4</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f11 7s2</orbits> + </element> + <element> + <number>100</number> + <name origin="Named after the scientist Enrico Fermi.">Fermium</name> + <symbol>Fm</symbol> + <period>7</period> + <mass>257.0951</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="G. T. Seaborg et al.">1953</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity></electronaffinity> + <radius> + <covalent></covalent> + <atomic>190</atomic> + <vdw></vdw> + <ionic charge="+3">97</ionic> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="9115200" halflifeformat="seconds" weight="" neutron="157" percentage="" /> + </isotopes> + <electronegativity>1.3</electronegativity> + <meltingpoint>1800</meltingpoint> + <oxydation>+2.+3</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f12 7s2</orbits> + </element> + <element> + <number>101</number> + <name origin="Named after the scientist D.I. Mendeleev.">Mendelevium</name> + <symbol>Md</symbol> + <period>7</period> + <mass>258.0986</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="G. T. Seaborg et al.">1955</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <ionic charge="+3">96</ionic> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="4449600" halflifeformat="seconds" weight="" neutron="157" percentage="" /> + </isotopes> + <meltingpoint>1100</meltingpoint> + <oxydation>+2.+3</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f13 7s2</orbits> + </element> + <element> + <number>102</number> + <name origin="Named after the scientist Alfred Nobel.">Nobelium</name> + <symbol>No</symbol> + <period>7</period> + <mass>259.1009</mass> + <block>f</block> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <ionic charge="+2">113</ionic> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1958</date> + <biologicalmeaning>0</biologicalmeaning> + <group>6</group> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <meltingpoint>1100</meltingpoint> + <oxydation>+2.+3.+4</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f14 7s2</orbits> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="3480" halflifeformat="seconds" weight="259.1009" neutron="157" percentage="100" /> + </isotopes> + </element> + <element> + <number>103</number> + <name origin="Named after the scientist Ernest Orlando Lawrence.">Lawrencium</name> + <symbol>Lr</symbol> + <period>7</period> + <mass>262.110</mass> + <block>f</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1961</date> + <biologicalmeaning>0</biologicalmeaning> + <group>7</group> + <electronaffinity></electronaffinity> + <electronegativity>1.3</electronegativity> + <meltingpoint>1900</meltingpoint> + <boilingpoint></boilingpoint> + <density></density> + <ionisationenergy> + </ionisationenergy> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="12960" halflifeformat="seconds" weight="262.110" neutron="159" percentage="100" /> + </isotopes> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <ionic charge="+3">94</ionic> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <oxydation>+3</oxydation> + <family>Rare_Earth</family> + <orbits>Rn 5f14 7s2 7p1</orbits> + </element> + <element> + <number>104</number> + <name origin="Named after the scientist Ernest Rutherford">Rutherfordium</name> + <symbol>Rf</symbol> + <period>7</period> + <mass>261.1089</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1964</date> + <biologicalmeaning>0</biologicalmeaning> + <group>4</group> + <electronaffinity></electronaffinity> + <electronegativity></electronegativity> + <meltingpoint></meltingpoint> + <boilingpoint></boilingpoint> + <density></density> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="66" halflifeformat="seconds" weight="" neutron="157" percentage="" /> + </isotopes> + <ionisationenergy> + </ionisationenergy> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <oxydation>+3</oxydation> + <family>Transition</family> + <orbits>Rn 5f14 6d2 7s2</orbits> + </element> + <element> + <number>105</number> + <name origin="Named after the science-town Dubna in Russia">Dubnium</name> + <symbol>Db</symbol> + <period>7</period> + <mass>262.1144</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1967</date> + <biologicalmeaning>0</biologicalmeaning> + <group>5</group> + <electronaffinity></electronaffinity> + <electronegativity></electronegativity> + <meltingpoint></meltingpoint> + <boilingpoint></boilingpoint> + <density></density> + <ionisationenergy> + </ionisationenergy> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="34" halflifeformat="seconds" weight="" neutron="157" percentage="" /> + </isotopes> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <orbits>Rn 5f14 6d3 7s2</orbits> + <family>Transition</family> + </element> + <element> + <number>106</number> + <name origin="Named after the scientist G. Theodore Seaborg.">Seaborgium</name> + <symbol>Sg</symbol> + <period>7</period> + <mass>263.1186</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1974</date> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="20" halflifeformat="seconds" weight="" neutron="160" percentage="" /> + </isotopes> + <biologicalmeaning>0</biologicalmeaning> + <group>6</group> + <electronaffinity></electronaffinity> + <family>Transition</family> + </element> + <element> + <number>107</number> + <name origin="Named after the scientist Niels Bohr.">Bohrium</name> + <symbol>Bh</symbol> + <period>7</period> + <mass>262.1231</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1981</date> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <biologicalmeaning>0</biologicalmeaning> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="0.4" halflifeformat="seconds" weight="" neutron="157" percentage="" /> + </isotopes> + <group>7</group> + <electronaffinity></electronaffinity> + <family>Transition</family> + </element> + <element> + <number>108</number> + <name origin="Latin 'hassia' for the German county Hessen. In Hessen. a lot elements have been discovered.">Hassium</name> + <symbol>Hs</symbol> + <period>7</period> + <mass>265.1306</mass> + <block>d</block> + <acidicbehaviour>2</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1984</date> + <biologicalmeaning>0</biologicalmeaning> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <group>8</group> + <electronaffinity></electronaffinity> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="9.3" halflifeformat="seconds" weight="" neutron="161" percentage="" /> + </isotopes> + <family>Transition</family> + </element> + <element> + <number>109</number> + <name origin="Named after the scientist Lise Meitner.">Meitnerium</name> + <symbol>Mt</symbol> + <period>7</period> + <mass>266.1378</mass> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <radioactive>1</radioactive> + <artificial>1</artificial> + <date scientist="">1982</date> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <biologicalmeaning>0</biologicalmeaning> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="0.7" halflifeformat="seconds" weight="" neutron="159" percentage="" /> + </isotopes> + <group>8</group> + <electronaffinity></electronaffinity> + <family>Transition</family> + </element> + <element> + <number>110</number> + <name origin="Named after the German city Darmstadt where many elements have been discovered.">Darmstadtium</name> + <symbol>Ds</symbol> + <period>7</period> + <mass>271</mass> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1994</date> + <biologicalmeaning>0</biologicalmeaning> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="0.001" halflifeformat="seconds" weight="" neutron="161" percentage="" /> + </isotopes> + <group>8</group> + <electronaffinity></electronaffinity> + <family>Transition</family> + </element> + <element> + <number>111</number> + <name origin="Named after Wilhelm Conrad Röntgen.">Roentgenium</name> + <symbol>Rg</symbol> + <period>7</period> + <mass>272</mass> + <block>d</block> + <acidicbehaviour>0</acidicbehaviour> + <artificial>1</artificial> + <radioactive>1</radioactive> + <date scientist="">1994</date> + <biologicalmeaning>0</biologicalmeaning> + <radius> + <covalent></covalent> + <atomic></atomic> + <vdw></vdw> + <bondxx></bondxx> + </radius> + <abundance>0</abundance> + <isotopes> + <isotope alphapercentage="" alphadecay="" betapluspercentage="" betaplusdecay="" betaminuspercentage="" betaminusdecay="" ecpercentage="" ecdecay="" spin="" magmoment="" halflife="0.0015" halflifeformat="seconds" weight="" neutron="161" percentage="" /> + </isotopes> + <group>1</group> + <electronaffinity></electronaffinity> + <family>Transition</family> + </element> +</kalzium> diff --git a/kalzium/src/data/knowledge.xml b/kalzium/src/data/knowledge.xml new file mode 100644 index 00000000..fbcde140 --- /dev/null +++ b/kalzium/src/data/knowledge.xml @@ -0,0 +1,283 @@ +<?xml version="1.0" encoding="UTF-8"?> +<wissen> + <item> + <name>State of matter</name> + <desc>Form of a substance; dependant on form stability and whether it takes up a definite volume: solid, liquid or gaseous.</desc> + <references> + <refitem>Boiling point</refitem> + <refitem>Melting point</refitem> + </references> + </item> + <item> + <name>Chemical Symbol</name> + <desc>One, two, or three letter abbreviation; set through international convention.</desc> + <references> + <refitem>Element</refitem> + </references> + </item> + <item> + <name>Chromatography</name> + <desc>Matter separation in a moving medium (mobile phase) through differentiated absorption on a static medium (stationary phase).</desc> + </item> + <item> + <name>Distillation</name> + <desc>Separation of a liquid solution (homogeneous mix) into its components through evaporation and condensation. In a fractionary distillation the process is repeated several times in a column.</desc> + </item> + <item> + <name>Element</name> + <desc>Matter that cannot be broken down into simpler matter. Chemical elements are cornerstones of Materials. Elements consist of atoms that consist of a nucleus of positive protons, neutral neutrons, and a shell of electrons.</desc> + </item> + <item> + <name>Emulsion</name> + <desc>Heterogeneous mix of two liquids.</desc> + </item> + <item> + <name>Extraction</name> + <desc>Processing a homogeneous or heterogeneous mix to get pure matter.</desc> + <references> + <refitem>Mix</refitem> + </references> + </item> + <item> + <name>Filtering</name> + <desc>Separation of a solid matter from a liquid matter or gaseous matter with a filter (porous separation wall).</desc> + </item> + <item> + <name>Mix</name> + <desc>Matter consisting of differentiated matter, combined in non-set ratios. [i]Homogeneous mixes[/i] have a coherent look, [i]heterogeneous mixes[/i] consist of multiple phases.</desc> + </item> + <item> + <name>Accuracy</name> + <desc>Consisting of accidental and systematic errors.</desc> + </item> + <item> + <name>Law of Conservation of Mass</name> + <desc>During a chemical reaction mass is neither lost nor gained. The sum mass of the material going into the reaction equals the sum of the mass of the products of the reaction.</desc> + </item> + <item> + <name>Law of multiple proportions</name> + <desc>An alloy always contains the same elements in the same mass ratio. Should two or more elements bind together then the mass ratio is constant.</desc> + </item> + <item> + <name>Crystallization</name> + <desc>Separation of solid, crystalline matter from a solution, or the liquid or gaseous phases.</desc> + </item> + <item> + <name>Solution</name> + <desc>Homogeneous mix of multiple pure materials</desc> + </item> + <item> + <name>Mass</name> + <desc>Measurement of an amount of matter.</desc> + </item> + <item> + <name>Matter</name> + <desc>All that takes up space and has mass.</desc> + </item> + <item> + <name>Phase</name> + <desc>Through chemical composition and physical attributes, homogeneous portion of matter that separated from its environment in its expansion through a surface.</desc> + </item> + <item> + <name>Accuracy and precision</name> + <desc>Expressed through standard deviation: Values given over accidental errors.</desc> + </item> + <item> + <name>Correctness</name> + <desc>Values given over accidental errors.</desc> + </item> + <item> + <name>SI-Unit</name> + <desc>Measurement unit using International Symbols.</desc> + </item> + <item> + <name>Significant figures</name> + <desc>The number of digits which are meaningful in a number.</desc> + </item> + <item> + <name>Standard deviation</name> + <desc>An amount with which the precision of a measurement can be estimates.</desc> + </item> + <item> + <name>Suspension</name> + <desc>Heterogeneous mix consisting of a liquid and solid matter.</desc> + </item> + <item> + <name>Alloys</name> + <desc>Pure matter consisting of multiple elements in a set ratio.</desc> + </item> + <item> + <name>Alpha rays</name> + <desc>Rays consisting of alpha particles, consisting of two protons and two neutrons that are emitted from the Atoms of certain radioactive elements.</desc> + </item> + <item> + <name>Atom</name> + <desc>Atoms are chemically inseparable and building blocks of matter. Atoms of one kind are called an Element.</desc> + <references> + <refitem>Element</refitem> + <refitem>Electron</refitem> + <refitem>Proton</refitem> + <refitem>Neutron</refitem> + </references> + </item> + <item> + <name>Atomic nucleus</name> + <desc>The small, positively-charged center of an Atom, in which Protons and Neutrons are found.</desc> + <references> + <refitem>Atom</refitem> + </references> + </item> + <item> + <name>Atomic Mass</name> + <desc>Mass of an atom, taken on a scale where the the mass of a carbon atom is 12u. In elements that consist of different isotopes the mid-range mass of the isotope mix is given.</desc> + <references> + <refitem>Atom</refitem> + <refitem>Mass</refitem> + </references> + </item> + <item> + <name>Isotope</name> + <desc>Isotopes are forms of a chemical element whose nuclei have the same atomic number, Z, but different atomic masses, A. The word isotope, meaning at the same place, comes from the fact that all isotopes of an element are located at the same place on the periodic table.</desc> + <references> + <refitem>Atom</refitem> + </references> + </item> + <item> + <name>Spin</name> + <desc>The spin is an intrinsic angular momentum associated with microscopic particles. It is a purely quantum mechanical phenomenon without any analogy in classical mechanics. Whereas classical angular momentum arises from the rotation of an extended object, spin is not associated with any rotating internal masses, but is intrinsic to the particle itself.</desc> + <references> + <refitem>Isotope</refitem> + </references> + </item> + <item> + <name>Magnetic Moment</name> + <desc>The magnetic moment of an object is a vector relating the aligning torque in a magnetic field experienced by the object to the field vector itself. It's measured in units of the nuclear magneton μ[sub]n[/sub]=(5.0507866 ± 0.0000017) 10[sup]-27[/sup] JT[sup]-1[/sup]</desc> + <references> + <refitem>Isotope</refitem> + </references> + </item> + <item> + <name>Decay Mode</name> + <desc>The decay mode describes a particular way a particle decays. For radioactive decay (the decay of nuclides) the decay modes are:[br] -> alpha decay (emission of a Helium-4 nucleus).[br] -> β[sup]-[/sup] decay (emission of an electron)[br] -> β[sup]+[/sup] decay (emission of a positron) [br] -> electron capture (EC) [br] -> proton emission [br] -> spontaneous fission [br] Typically one decay mode predominates for a particular nuclide.</desc> + <references> + <refitem>Isotope</refitem> + </references> + </item> + <item> + <name>Decay Energy</name> + <desc>The decay energy is the energy released by a nuclear decay.</desc> + <references> + <refitem>Isotope</refitem> + </references> + </item> + <item> + <name>Nuclides</name> + <desc>[i]see isotopes[/i]</desc> + <references> + <refitem>Isotope</refitem> + <refitem>Isotone</refitem> + <refitem>Nuclear Isomer</refitem> + <refitem>Isobars</refitem> + </references> + </item> + <item> + <name>Isotone</name> + <desc>Two nuclides are isotones if they have the same number N of neutrons.</desc> + <references> + <refitem>Isotope</refitem> + <refitem>Nuclear Isomer</refitem> + <refitem>Isobar</refitem> + </references> + </item> + <item> + <name>Isobar</name> + <desc>Isobars are nuclides having the same mass number, i.e. sum of protons plus neutrons.</desc> + <references> + <refitem>Isotope</refitem> + <refitem>Isotone</refitem> + <refitem>Nuclear Isomer</refitem> + </references> + </item> + <item> + <name>Nuclear Isomer</name> + <desc>A nuclear isomer is a metastable or isomeric state of an atom caused by the excitation of a proton or neutron in its nucleus so that it requires a change in spin before it can release its extra energy. They decay to lower energy states of the nuclide through two isomeric transitions:[br] -> γ- emission (emission of a high-energy photon)[br] -> internal conversion (the energy is used to ionize the atom)[br] Contrast this with the definition of a chemical isomer, the more common use of the word. Also contrast with the meaning of isotope, in which the difference is the number of neutrons in the nucleus. Metastable isomers of a particular atom are usually designated with an "m" (or, in the case of atoms with more than one isomer, 2m, 3m, and so on). This designation is usually placed after the atomic symbol and number of the atom (e.g., Co-58m), but is sometimes placed as a superscript before (e.g., [sup]m[/sup]Co-58 or [sup]58m[/sup]Co).</desc> + <references> + <refitem>Isotope</refitem> + <refitem>Isobar</refitem> + <refitem>Isotone</refitem> + </references> + </item> + <item> + <name>Beta rays</name> + <desc>Rays consisting of electrons that are emitted from Atoms of radioactive elements.</desc> + </item> + <item> + <name>Electron</name> + <desc>The electron is a subatomic particle with a mass of m[sub]e[/sub]=(9.1093897 ± 0.0000054)e-31 kg and a negative charge of [i]e[/i]=(1.60217733 ± 0.00000049)e-19 C + </desc> + <references> + <refitem>Atom</refitem> + </references> + </item> + <item> + <name>Proton</name> + <desc>The proton is a subatomic particle with a mass of m[sub]e[/sub]=(1.6726231 ± 0.0000010) 10[sup]-27[/sup] kg and a positive charge of [i]e[/i]=(1.60217733 ± 0.00000049) 10[sup]-19[/sup] C which occurs in the nucleus of an atom.</desc> + <references> + <refitem>Atom</refitem> + <refitem>Electron</refitem> + <refitem>Neutron</refitem> + </references> + </item> + <item> + <name>Neutron</name> + <desc>The neutron is a subatomic particle with a mass of m[sub]e[/sub]=(1.6749286 ± 0.0000010) 10[sup]-27[/sup] kg which occurs in the nucleus of an atom.</desc> + <references> + <refitem>Atom</refitem> + <refitem>Electron</refitem> + <refitem>Proton</refitem> + </references> + </item> + <item> + <name>Cathode Rays</name> + <desc>Cathode rays are streams of electrons observed in vacuum tubes, i.e. evacuated glass tubes that are equipped with at least two electrodes, a cathode (negative electrode) and an anode (positive electrode) in a configuration known as a diode.</desc> + <references> + <refitem>Electron</refitem> + </references> + </item> + <item> + <name>Ionic Radius</name> + <desc>The Ionic Radius is the radius of a charged atom, a so called ion. The ion can have a positive or a negative charge. The charge of the ion which radius you see is also displayed in Kalzium. A positive ion has less electrons in its shell then the atom, a negative ion has more electrons. Therefore, a postive ion has a smaller radius than its atom and vice versa.</desc> + <references> + <refitem>Covalent Radius</refitem> + <refitem>Atomic Radius</refitem> + <refitem>Van der Waals Radius</refitem> + </references> + </item> + <item> + <name>Van der Waals Radius</name> + <desc>The van der Waals radius of an atom is the radius of an imaginary hard sphere which can be used to model the atom for many purposes. Van der Waals radii are determined from measurements of atomic spacing between pairs of unbonded atoms in crystals.</desc> + <references> + <refitem>Covalent Radius</refitem> + <refitem>Atomic Radius</refitem> + <refitem>Ionic Radius</refitem> + </references> + </item> + <item> + <name>Atomic Radius</name> + <desc>The atomic radius is the distance from the atomic nucleus to the outmost stable electron orbital in a atom that is at equilibrium.</desc> + <references> + <refitem>Covalent Radius</refitem> + <refitem>Van der Waals Radius</refitem> + <refitem>Ionic Radius</refitem> + </references> + </item> + <item> + <name>Covalent Radius</name> + <desc>Covalent radius in chemistry corresponds to half of the distance between two identical atomic nuclei, bound by a covalent bond.</desc> + <references> + <refitem>Atomic Radius</refitem> + <refitem>Ionic Radius</refitem> + <refitem>Van der Waals Radius</refitem> + </references> + </item> +</wissen> diff --git a/kalzium/src/data/knowledge.xml.todo b/kalzium/src/data/knowledge.xml.todo new file mode 100644 index 00000000..c87560f6 --- /dev/null +++ b/kalzium/src/data/knowledge.xml.todo @@ -0,0 +1,1282 @@ +<wissen>
+ <item>
+ <name>Elektron</name>DONE-JB
+ <desc>Subatomares Teilchen mit der Masse 0,00055 u und Ladung -[i]e[/i]. Diese Ladung nennt man die Elementarladung.</desc>
+ </item>
+ <item>
+ <name>Elementarladung</name>
+ <desc>[img]e.png[/img] Das Elektron hat eine negative, das Proton eine positive Elementarladung.</desc>
+ </item>
+ <item>
+ <name>Isotope</name>DONE-JB
+ <desc>Atome des gleichen Elements und daher gleicher Ordnungszahl, aber unterschiedlicher Massen- und Neutronenzahl.</desc>
+ </item>
+ <item>
+ <name>Kanalstrahlen oder positive Strahlen</name>
+ <desc>Strahlen von positiven Ionen.</desc>
+ </item>
+ <item>
+ <name>Kathodenstrahl</name>DONE-JB
+ <desc>Strahl von Elektronen, die von der Kathode (negativen
+ Elektrode) in einem evakuierten Rohr ausgehen.</desc>
+ </item>
+ <item>
+ <name>Kernbindungsenergie</name>
+ <desc>Das Energiequivalent zum Massendefekt eines Atomkerns.
+ Sie entspricht der Energie, die aufzubringen wre, um den Atomkern in seine
+ Nucleonen zu zerlegen.</desc>
+ </item>
+ <item>
+ <name>Massenspektrometer</name>
+ <desc>Instrument, mit dem die Masse von Isotopen und deren relative Hufigkeit gemessen werden kann.</desc>
+ </item>
+ <item>
+ <name>Massenzahl</name>
+ <desc>Summe aller Protonen und Neutronen im Atomkern. Symbol: "A"</desc>
+ </item>
+ <item>
+ <name>Neutron</name>DONE-JB
+ <desc>Subatomares Teilchen ohne elektrische Ladung, mit Masse 1,0087 u, das im Atomkern vorkommt.</desc>
+ </item>
+ <item>
+ <name>Proton</name>DONE-JB
+ <desc>Subatomares Teilchen mit positiver Ladung und Masse 1,0073 u
+ und das im Atomkern vorkommt.</desc>
+ </item>
+ <item>
+ <name>Radioaktivitt</name>
+ <desc>Der spontane Zerfall von Atomkernen unter Aussto von radioaktiver Strahlung und Umwandlung zu anderen Kernen; natrliche radioaktive Stoffe geben Alpha-, Beta- oder Gamma-Strahlen ab.</desc>
+ </item>
+ <item>
+ <name>Relative Atommasse A</name>
+ <desc>Relative Atommasse A Masse eines Atoms relativ zum zwlften Teil der Masse eines Atoms C-12</desc>
+ <ref>Atom</ref>
+ </item>
+ <item>
+ <name>Anion</name>
+ <desc>Negativ geladenes Ion, entstanden durch Aufnahme eines
+ oder mehrerer Elektronen durch ein Atom oder eine Gruppe von kovalent
+ miteinander verbundenen Atomen.</desc>
+ </item>
+ <item>
+ <name>Avogadro-Zahl</name>
+ <desc>Zahl der Teilchen in einem Mol: [img]n.png[/img]
+ </desc>
+ </item>
+ <item>
+ <name>Chemische Formel</name>
+ <desc>Formel zur Bezeichnung der Art und relativen Anzahl der
+ Atome in einer Verbindung mit Hilfe von Elementsymbolen.</desc>
+ </item>
+ <item>
+ <name>Einatomiges Ion</name>
+ <desc>Geladenes Atom. Zum Beispiel F(-)</desc>
+ <ref>Atom</ref>
+ </item>
+ <item>
+ <name>Empirische Formel</name>
+ <desc>Chemische Formel, die das einfachste ganzzahlige
+ Verhltnis der Atome in einer Verbindung bezeichnet.</desc>
+ </item>
+ <item>
+ <name>Massenanteil</name>
+ <desc>Anteil des Elements [i]X[/i] an der Masse der Verbindung oder Konzentrationsangabe einer Lsung als Masse des gelsten Stoffes pro Masse Lsung.[i]w[/i] * 100% = Massenprozent.</desc>
+ </item>
+ <item>
+ <name>Mehratomiges Ion (Molekl-Ion)</name>
+ <desc>Ion, das aus mehreren Atomen besteht.</desc>
+ <ref>Atom</ref>
+ </item>
+ <item>
+ <name>Mol</name>
+ <desc>Stoffmenge, die genauso viele Teilchen enthlt wie Atome in C-12 enthalten sind, nmlich die Avogadro-Zahl [i]N[/i].</desc>
+ </item>
+ <item>
+ <name>Molare Masse</name>
+ <desc>Masse eines Mols eines Stoffes. Diese Masse eines Molekls ergibt sich aus der Summe der molaren Massen der Atome.</desc>
+ </item>
+ <item>
+ <name>Molmasse</name>
+ <desc></desc>
+ <ref>Molare Masse,Avogadro-Zahl</ref>
+ </item>
+ <item>
+ <name>Molekl</name>
+ <desc>Teilchen, das aus mehreren aneinander gebundenen Atomen besteht.</desc>
+ <ref>Atom</ref>
+ </item>
+ <item>
+ <name>Moleklformel oder Molekularformel</name>
+ <desc>Chemische Formel, welche die Art und Zahl der Atome in einem Molekl bezeichnet.</desc>
+ </item>
+ <item>
+ <name>Moleklmasse</name>
+ <desc>Masse eines Molekls in u-Einheiten.</desc>
+ </item>
+ <item>
+ <name>Relative Formelmasse und relative Moleklmasse</name>
+ <desc>Summe der relativen Atommassen aller Atome in der Anzahl wie in der chemischen Formel bezeichnet.</desc>
+ </item>
+ <item>
+ <name>Stchiometrie</name>
+ <desc>Die quantitativen Beziehungen zwischen Elementen in einer Verbindung und zwischen Elementen und Verbindungen, die an einer chemischen Reaktion beteiligt sind.</desc>
+ </item>
+ <item>
+ <name>Bildungsenthalpie</name>
+ <desc>Reaktionsenthalpie fr die Bildung einer Verbindung aus den Elementen in deren stabilster Form. Die Standard-Bildungsenthalpie bezieht sich auf die Bildungsreaktion unter Standard-Bedingungen, d.h. Norm-Atmosphrendruck (101,3kPa) und einer Standard-Temperatur, in der Regel 25C = 298 K.</desc>
+ </item>
+ <item>
+ <name>Bildungsenergie</name>
+ <desc>Bentigte Energie, um die Bindung zwischen zwei Atomen aufzubrechen. Die (Bindungs-) Dissoziationsenergie bezieht sich auf die aufzuwendende Energie zur Trennung der Atome eines zweiatomigen Molekls. Die mittlere Bindungsenergie bezieht sich auf mehratomige Molekle und ist ein Mittelwert fr gleichartige Bindungen.
+ </desc>
+ </item>
+ <item>
+ <name>Endotherme Reaktion</name>
+ <desc>Chemische Reaktion unter Aufnahme von Wrme</desc>
+ </item>
+ <item>
+ <name>Energie</name>
+ <desc>Die Fhigkeit, Arbeit zu leisten</desc>
+ </item>
+ <item>
+ <name>Exotherme Reaktion</name>
+ <desc>Chemische Reaktion unter Abgabe von Wrme</desc>
+ </item>
+ <item>
+ <name>Enthalpie</name>
+ <desc>Es gilt [img]enthalpie.png[/img] Die Zustandsfunktion [i]H[/i] nennt man [b]Enthalpie[/b]. Die nderung der Enthalpie entspricht also der nderung der inneren Energie U und der Volumenarbeit pV bei konstantem Druck. Fr Reaktionen ohne Volumennderung ist also die nderung der inneren Energie gleich der Enthalpiedifferenz. </desc>
+ </item>
+ <item>
+ <name>Innere Energie</name>
+ <desc>Der Energieinhalt eines Systems mit dem Symbol [i]U[/i]. Die Reaktionsenergie ist die Differenz der inneren Energie von Produkten und Reaktanden, es gilt dabei [img]enthalpie.png[/img]</desc>
+ </item>
+ <item>
+ <name>Joule</name>
+ <desc>SI-Einheit fr die Energie. Dabei gilt: [img]joule.png[/img]</desc>
+ </item>
+ <item>
+ <name>Kalorimeter</name>
+ <desc>Gert zur Messung der umgesetzten Wrme bei chemischen oder physikalischen Vorgngen.</desc>
+ </item>
+ <item>
+ <name>Kalorie</name>
+ <desc>ltere Einheit fr Wrmeenergie. Sie entspricht der Energie, die zum Erwrmen von 1g Wasser von 14,5 auf 15,5 C bentigt wird; genaue Definition: 1 cal = 4.184 J (exakt).</desc>
+ </item>
+ <item>
+ <name>Reaktionsenergie</name>
+ <desc>Gesamtenergie, die bei einer chemischen Reaktion aufgenommen oder abgegeben wird; sie entspricht der Differenz der inneren Energien von Produkten und Reaktanden.</desc>
+ </item>
+ <item>
+ <name>Reaktionsenthalpie</name>
+ <desc>Energie, die als Wrme bei einer chemischen Reaktion aufgenommen oder abgeben werden kann: [img]enthalpie.png[/img]</desc>
+ </item>
+ <item>
+ <name>Satz von Hess</name>
+ <desc>Die Reaktionsenthalpie ist unabhngig davon, ob eine Reaktion in einem oder mehreren Schritten abluft. </desc>
+ </item>
+ <item>
+ <name>Satz der konstanten Wrmesummen</name>
+ <desc>Die Reaktionsenthalpie ist unabhngig davon, ob eine Reaktion in einem oder mehreren Schritten abluft. </desc>
+ </item>
+ <item>
+ <name>Spezifische Wrme</name>
+ <desc>Bentigte Wrmemenge, um 1 g einer Substanz um 1C zu erwrmen.</desc>
+ </item>
+ <item>
+ <name>Thermochemie</name>
+ <desc>Studium der bei chemischen Prozessen umgesetzten Wrmemengen</desc>
+ </item>
+ <item>
+ <name>Volumenarbeit</name>
+ <desc>Energieform, die spontan von einem Krper hherer Temperatur zu einem niedrigerer Temperatur fliet.</desc>
+ </item>
+ <item>
+ <name>Wrmekapazitt</name>
+ <desc>Bentigte Wrmemenge, um eine gegebene Masse um 1K zu erwrmen.</desc>
+ </item>
+ <item>
+ <name>Wellenfunktion</name>
+ <desc>Die Wellenfunktion (gr. Symbol Psi) ist eine mathematische Funktion zur Beschreibung eines Elektrons als Welle. Eine Wellenfunktion beschreibt nicht mehr die exakte Bewegung von Teilchen sondern sind ein Ma fr die Wahrscheinlichkeit mit der sich ein Teilchen an einem Ort aufhlt.</desc>
+ </item>
+ <item>
+ <name>Valenzelektronen</name>
+ <desc>Elektronen der uersten Schale eines Hauptgruppenelements, der uersten zwei Schalen eines Nebengruppenelements oder der uersten drei Schalen eines Lanthanoids oder Actinoids.</desc>
+ </item>
+ <item>
+ <name>Unterschale</name>
+ <desc>Durch die Nebenquantenzahl [i]l[/i] bezeichnete Gruppe von Orbitalen gleicher Energie in einer Schale.</desc>
+ </item>
+ <item>
+ <name>Unschrferelation</name>
+ <desc>W. Heisenberg hat 1927 die Unschrferelation aufgestellt. Diese Theorie sagt aus, dass man von einem Teilchen nicht gleichzeitig Ort ([i]x[/i]) und Impuls ([i]mv[/i]) exakt bestimmen kann. Es ergibt sich folgende Beziehung: [img]unschaerfe.png[/img] Die Unbestimmtheit des Ortes ist mit 70nm etwa 1300 Mal grer als der Radius im Bohr'schen Atommodell (r = 0.053 nm). Somit sind also Bahnmodelle wie bei Bohr nicht zulssig, denn diese mechanischen Modelle treffen Aussagen ber Ort und Impuls gleichzeitig. Daher spricht man bei modernen Modellen auch von [b]Wahrscheinlichkeiten[/b] mit denen sich Teilchen aufhalten.</desc>
+ </item>
+ <item>
+ <name>Spin</name>DONE-JB
+ <desc>Deutung des Magnetfelds eines Elektrons als Folge einer Drehung um seine eigene Achse. Nur zwei Spinzustnde sind mglich, die durch die Spinquantenzahl s = +0.5 oder -0.5 charakterisiert werden.</desc>
+ </item>
+ <item>
+ <name>Spektrum</name>
+ <desc>Durch Aufteilung von Licht in Abhngigkeit von der Wellenlnge erhaltenes Muster. Weies Licht, in dem alle Wellenlngen vorkommen, ergibt ein kontinuierliches Spektrum. Substanzen, die aus einem angeregten Zustand Licht emittieren, ergeben ein Linienspektrum.</desc>
+ </item>
+ <item>
+ <name>Schrdinger Gleichung</name>
+ <desc>Gleichung, mit der die Wellenfunktionen der Orbitale berechnet werden. Siehe [i]Wellenfunktion[/i]</desc>
+ </item>
+ <item>
+ <name>Schale</name>
+ <desc>Gruppe von Orbitalen eines Atoms mit gleicher Hauptquantenzahl n.</desc>
+ </item>
+ <item>
+ <name>Photon</name>
+ <desc>Kleinste Energieportion von elektromagnetischer Strahlung. Seine Energie E ist der Frequenz der Strahlung proportional: [img]energie.png[/img]</desc>
+ </item>
+ <item>
+ <name>Actinoide</name>
+ <desc>Die Elemente, die im Periodensystem dem Actinium (Z = 89) folgen und bei denen als letztes ein 5f-Orbital besetzt wird.</desc>
+ </item>
+ <item>
+ <name>Angeregter Zustand</name>
+ <desc>Zustand eines Atoms oder Molekls mit einer Elektronenkonfiguration mit hherer Energie als im Grundzustand.</desc>
+ </item>
+ <item>
+ <name>Aufbauprinzip</name>
+ <desc>Prinzip zum Aufbau der Atome durch sukzessives Hinzufgen von Protonen und Elektronen.</desc>
+ </item>
+ <item>
+ <name>Ausschlieungsprinzip (Pauli-Prinzip)</name>
+ <desc>Es drfen keine zwei Elektronen in einem Atom in allen vier Quantenzahlen (n, l, m und s) bereinstimmen.</desc>
+ </item>
+ <item>
+ <name>Bohr-Atommodell </name>
+ <desc>Modell fr das Wasserstoff-Atom, bei dem das Elektron nur auf definierten Kreisbahnen umlaufen kann.</desc>
+ <ref>Atom</ref>
+ </item>
+ <item>
+ <name>de Broglie-Beziehung </name>
+ <desc>Beziehung zwischen der Wellenlnge und dem Impuls eines Quants, wenn ein Teilchen als Welle beschrieben wird.</desc>
+ </item>
+ <item>
+ <name>Diamagnetismus</name>
+ <desc>Substanz, in der alle Elektronen gepaart sind. Sie wird von einem Magnetfeld abgestoen.</desc>
+ </item>
+ <item>
+ <name>Edelgase</name>
+ <desc>Elemente der 0. Gruppe (VIII. Hauptgruppe) des Periodensystems. Es sind: Helium, Neon, Argon, Krypton, Xenon und Radon. Sie zeichnen sich durch besondere chemische Reaktionstrgheit aus, woher auch der Name kommt.</desc>
+ </item>
+ <item>
+ <name>Elektromagnetische Strahlung</name>
+ <desc>Strahlung, die sich mit Lichtgeschwindigkeit (c = 2997.9 Kilometer pro Sekunde) ausbreitet und je nach Experiment als Welle oder als Strahl von Photonen beschrieben werden. </desc>
+ </item>
+ <item>
+ <name>Elektronenkonfiguration</name>
+ <desc>Anordnung der Elektronen in einem Atom (Verteilung auf die Orbitale).</desc>
+ <ref>Grundzustand</ref>
+ </item>
+ <item>
+ <name>Grundzustand</name>
+ <desc>Zustand mit der geringsten mglichen Energie fr ein Atom oder Molekl.</desc>
+ </item>
+ <item>
+ <name>Ionisierungsenergie</name>
+ <desc>Aufzuwendende Energie, um einem Atom oder Ion das am schwchsten gebundene Elektron zu entreien. Die erste Ionisierungsenergie betrifft das erste Elektron eines Atoms, die zweite das zweite Elektron usw.</desc>
+ </item>
+ <item>
+ <name>Orbital</name>
+ <desc>Wellenfunktion eines Elektrons in einem Atom; sie ist durch die Quantenzahlen n, l und m charakterisiert. Zu jedem Orbital gehrt ein definierter Energiezustand und eine definierte Verteilung der Ladungsdichte. Maximal zwei Elektronen mit entgegengesetztem Spin knnen das gleiche Orbital besetzen. Das folgende Bild zeigt die fnf D-Orbitale: [img]d_orbitale.jpg[/img] </desc>
+ </item>
+ <item>
+ <name>Paramagnetismus</name>
+ <desc>Substanzen, die ungepaarte Elektronen enthalten, sind paramagnetisch und werden in ein magnetisches Feld hineingezogen</desc>
+ </item>
+ <item>
+ <name>Periodensystem</name>
+ <desc>Tabelle der chemischen Elemente, geordnet nach ihrer Ordnungszahl und nach ihren chemischen Eigenschaften.[img]pse.png[/img]</desc>
+ </item>
+ <item>
+ <name>Periode</name>
+ <desc>Elemente, die in einer Zeile des Periodensystems stehen.</desc>
+ </item>
+ <item>
+ <name>Bindungslnge</name>
+ <desc>Abstand zwischen den Atomkernen zweier aneinander gebundener Atome.</desc>
+ </item>
+ <item>
+ <name>Born-Haber-Kreisprozess</name>
+ <desc>Berechnungsverfahren fr die Gitterenergie einer Ionenverbindung aus mebaren Enthalpiewerten</desc>
+ </item>
+ <item>
+ <name>Abschirmung</name>
+ <desc>Verringerung der auf die Auenelektronen wirksamen Kernladung durch innere Elektronen.</desc>
+ </item>
+ <item>
+ <name>Effektive Atomgre</name>
+ <desc>Aufgrund des Abstands zwischen Atomen ermittelte Gre eines Atoms. Je nach der Art der Bindung variiert die effektive Gre, die als Kovalenz-, Ionen-, Metall- oder van der Waals-Radius zum Ausdruck gebracht wird.</desc>
+ <ref>Atom</ref>
+ </item>
+ <item>
+ <name>Elektronenaffinitt</name>
+ <desc>Die erste Elektronenaffinitt ist die Energie, die umgesetzt wird, wenn in einem Gas ein Atom im Grundzustand ein Elektron aufnimmt. Die zweite Elektronenaffinitt bezieht sich auf die Aufnahme eines zweiten Elektrons usw.</desc>
+ </item>
+ <item>
+ <name>Gitterenergie</name>
+ <desc>Freigesetzte Energie, wenn Ionen aus dem Gaszustand zu einem Ionenkristall zusammengefgt werden.</desc>
+ </item>
+ <item>
+ <name>Ionenbindung</name>
+ <desc>Anziehende Kraft, die negative und positive Ionen zusammenhlt und zu einem Ionenkristall fhrt. Sie kommt durch den bergang von Elektronen von einer Atomsorte auf eine andere zustande.</desc>
+ </item>
+ <item>
+ <name>Ionenradius</name>
+ <desc>Radius fr die effektive Gre eines einatomigen Ions in einem Ionengitter. Er wird aus den Abstnden zwischen den Ionen berechnet.</desc>
+ </item>
+ <item>
+ <name>Ionenverbindung</name>
+ <desc>Verbindung, die aus Kationen und Anionen aufgebaut ist und durch die elektrostatische Anziehung zwischen ihnen zusammengehalten wird.</desc>
+ </item>
+ <item>
+ <name>Isoelektronisch</name>
+ <desc>Zwei Teilchen sind dann isoelektronisch wenn sie die gleiche Elektronenkonfiguration haben.</desc>
+ </item>
+ <item>
+ <name>Kation</name>
+ <desc>Positiv geladenes Ion, entstanden durch Abgabe von einem oder mehreren Elektronen aus einem Atom oder einer Gruppe von kovalent miteinander verbundenen Atomen.</desc>
+ </item>
+ <item>
+ <name>Koordinationszahl</name>
+ <desc>Die Anzahl der nchsten Nachbarionen um ein Ion in einem Ionenkristall oder die Anzahl der an ein Zentralatom direkt gebundenen Atome.</desc>
+ </item>
+ <item>
+ <name>Kovalenzradius</name>
+ <desc>Radius fr die effektive Gre eines Atoms, das durch kovalente Bindung mit einem anderen Atom verknpft ist.</desc>
+ </item>
+ <item>
+ <name>van der Waals-Radius</name>
+ <desc>Radius fr die effektive Gre eines Atoms, das nur durch die schwachen van der Waals-Krfte in Kontakt zu einem anderen Atom gehalten wird.</desc>
+ </item>
+ <item>
+ <name>Binre Verbindung</name>
+ <desc>Verbindung, die aus zwei Elementen aufgebaut ist. Zum Beispiel Salzsure (HCl) oder Kochsalz (NaCl) </desc>
+ </item>
+ <item>
+ <name>Bindendes Elektronenpaar</name>
+ <desc>Elektronenpaar, das eine kovalente Bindung zwischen zwei Atomen vermittelt.</desc>
+ </item>
+ <item>
+ <name>Dipolmoment</name>
+ <desc>Produkt aus dem Abstand zwischen den Ladungen und dem Betrag der Ladungen eines elektrischen Dipols.</desc>
+ </item>
+ <item>
+ <name>Einsames Elektronenpaar</name>
+ <desc>Valenzelektronenpaar, das nicht an einer kovalenten Bindung beteiligt ist. </desc>
+ </item>
+ <item>
+ <name>Freies Elektronenpaar</name>
+ <desc></desc>
+ <ref>Einsames Elektronenpaar</ref>
+ </item>
+ <item>
+ <name>Formalladung</name>
+ <desc>Eine willkrlich einem Atom zugewiesene elektrische Ladung, die sich ergibt, wenn die Bindungselektronen gleichmig auf die beteiligten Atome aufgeteilt werden. Formalladungen sind ntzlich zur Bewertung und Interpretation von Formeln, Strukturen und Eigenschaften von Moleklen und Molekl-Ionen, geben aber nicht die tatschliche Ladungsverteilung wieder.</desc>
+ </item>
+ <item>
+ <name>Kovalente Bindung</name>
+ <desc>Bindung die durch gemeinsame Elektronen zwischen zwei Atomen bewirkt wird. Bei einer Einfachbindung ist ein gemeinsames Elektronenpaar vorhanden, bei einer Doppel- und einer Dreifachbindung sind es zwei bzw. drei gemeinsame Elektronenpaare.</desc>
+ </item>
+ <item>
+ <name>Mesomerie</name>
+ <desc>Bindung die durch gemeinsame Elektronen zwischen zwei Atomen bewirkt wird. Bei einer Einfachbindung ist ein gemeinsames Elektronenpaar vorhanden, bei einer Doppel- und einer Dreifachbindung sind es zwei bzw. drei gemeinsame Elektronenpaare.</desc>
+ </item>
+ <item>
+ <name>Resonanz</name>
+ <desc></desc>
+ <ref>Mesomerie</ref>
+ </item>
+ <item>
+ <name>Oktett-Regel</name>
+ <desc>Nichtmetalle (auer Wasserstoff) gehen so viele kovalente Bindungen ein, bis sie die acht Elektronen der folgenden Edelgaskonfiguration um sich haben. Das sind in der Regel 8 - N kovalente Bindungen, wenn N die Hauptgruppennummer ist.</desc>
+ </item>
+ <item>
+ <name>Partieller Ionencharakter</name>
+ <desc>Ein Zahlenwert in Prozent, der die tatschliche Polaritt einer kovalenten Bindung im Verhltnis zur hypothetischen Polaritt angibt, die vorlge, wenn zwischen den Atomen eine Ionenbindung bestnde.</desc>
+ </item>
+ <item>
+ <name>Antibindendes Moleklorbital</name>
+ <desc>Moleklorbital mit geringer Elektronendichte im Bereich zwischen zwei Atomen. Elektronen eines antibindenden Moleklorbitals liegen energetisch hher als Elektronen der Atomorbitale, von denen sie abgeleitet wurden. Die Besetzung eines antibindenden Orbitals mit Elektronen schwcht die Bindung zwischen den Atomen.</desc>
+ </item>
+ <item>
+ <name>Bindendes Moleklorbital</name>
+ <desc>Moleklorbital mit hoher Elektronendichte im Bereich zwischen zwei Atomen. Elektronen eines bindenden Moleklorbitals liegen energetisch tiefer als Elektronen der Atomorbitale, von denen sie abgeleitet wurden.</desc>
+ </item>
+ <item>
+ <name>Bindungsordnung</name>
+ <desc>Die Hlfte aus dem Betrag der Anzahl der bindenden minus der Anzahl der antibindenden Elektronen einer Bindung.</desc>
+ </item>
+ <item>
+ <name>Delokalisierte Bindung</name>
+ <desc>Moleklorbital, dessen Ladungswolke sich ber mehr als zwei Atome erstreckt (s. auch Mehrzentrenbindung).</desc>
+ </item>
+ <item>
+ <name>Hybridisierung</name>
+ <desc>Mathematisches Verfahren, bei dem Wellenfunktionen von Atomorbitalen kombiniert werden, um Wellenfunktion fr einen neuen Satz von gleichwertigen Orbitalen zu erhalten. Hybridorbitale werden so gewhlt, dass sie der tatschlichen Struktur eines Molekls entsprechen.</desc>
+ </item>
+ <item>
+ <name>Moleklorbital</name>
+ <desc>Orbital, das zu einem Molekl und nicht zu einem einzelnen Atom gehrt.</desc>
+ </item>
+ <item>
+ <name>Pi-Bindung</name>
+ <desc>Kovalente Bindung, deren Ladungsdichte sich auf zwei Bereiche neben der Verbindungslinie zwischen den Atomkernen erstreckt.</desc>
+ <ref>Sigma-Bindung</ref>
+ </item>
+ <item>
+ <name>Sigma-Bindung</name>
+ <desc>Kovalente Bindung mit hoher, rotationssymmetrisch verteilter Ladungsdichte im Bereich zwischen zwei Atomkernen.</desc>
+ <ref>Pi-Bindung</ref>
+ </item>
+ <item>
+ <name>Valenzelektronenpaar-Abstoungs-Theorie</name>
+ <desc>Theorie zur Voraussage der Moleklgestalt durch Beachtung der gegenseitigen Abstoung zwischen bindenden wie auch nichtbindenden Valenzelektronenpaaren eines Atoms. Druck, Volumen und Temperatur sind die Zustandsgren eines Gases.</desc>
+ </item>
+ <item>
+ <name>VSEPR</name>
+ <desc></desc>
+ <ref>Valenzelektronenpaar-Abstoungs-Theorie</ref>
+ </item>
+ <item>
+ <name>Atmosphrendruck</name>
+ <desc>Gasdruck der Atmosphre. Der mittlere Atmosphrendruck auf Hhe des Meeresspiegels betrgt 101,325 kPa = 1,01325 bar und entspricht der alten Einheit einer physikalischen Atmosphre (1 atm).</desc>
+ <ref>Bar</ref>
+ </item>
+ <item>
+ <name>Avogadro-Gesetz</name>
+ <desc>Gleiche Volumina beliebiger Gase enthalten bei gleichem Druck und gleicher Temperatur gleich viele Teilchen.</desc>
+ </item>
+ <item>
+ <name>Bar</name>
+ <desc>Einheit fr den Druck; 1 bar = 105 Pa.</desc>
+ <ref>Druck</ref>
+ </item>
+ <item>
+ <name>Barometer</name>
+ <desc>Gert zum Messen des Atmosphrendrucks.</desc>
+ <ref>Druck</ref>
+ </item>
+ <item>
+ <name>Boyle-Mariotte-Gesetz</name>
+ <desc>Bei konstanter Temperatur ist das Volumen eines Gases umgekehrt proportional zu seinem Druck.</desc>
+ </item>
+ <item>
+ <name>Dalton-Gesetz der Partialdrcke</name>
+ <desc>Der Gesamtdruck eines Gasgemisches ist gleich der Summe der Partialdrcke aller anwesenden Gase.</desc>
+ <ref>Druck,Barometer</ref>
+ </item>
+ <item>
+ <name>Druck</name>
+ <desc>Kraft pro Flche.</desc>
+ </item>
+ <item>
+ <name>Effusion</name>
+ <desc>Als Effusion bezeichnet man das Ausstrmen eines Gases.</desc>
+ <ref>Graham-Effusionsgesetz</ref>
+ </item>
+ <item>
+ <name>Gay-Lussag-Gesetze</name>
+ <desc>Bei konstantem Druck ist das Volumen eines Gases proportional zur absoluten Temperatur. Bei konstantem Volumen ist der Druck eines Gases proportional zur absoluten Temperatur.</desc>
+ </item>
+ <item>
+ <name>Graham-Effusionsgesetz</name>
+ <desc>Die Ausstrmungsgeschwindigkeit eines Gases ist umgekehrt proportional zur Wurzel seiner Dichte oder zur Wurzel seiner molaren Masse.</desc>
+ <ref>Effusion</ref>
+ </item>
+ <item>
+ <name>Ideale Gaskonstante R</name>
+ <desc>Proportionalittskonstante im idealen Gasgesetz; [img]r.png[/img]</desc>
+ </item>
+ <item>
+ <name>Ideales Gasgesetz</name>
+ <desc>Druck p, Volumen V, Stoffmenge n und Temperatur T eines Gases hngen ber die ideale Gaskonstante R wie folgt miteinander zusammen: [img]idealesgg.png[/img]</desc>
+ <ref>Ideale Gaskonstante R</ref>
+ </item>
+ <item>
+ <name>Kelvin</name>
+ <desc>SI-Einheit zur Temperaturmessung auf der absoluten Temperaturskala. Die Temperatur in Kelvin ergibt sich aus der Temperatur in C durch Addition von 273,15.</desc>
+ <ref>Temperatur</ref>
+ </item>
+ <item>
+ <name>Kinetische Gastheorie</name>
+ <desc>Modell zur Erklrung der Eigenschaften von Gasen und zur Ableitung des idealen Gasgesetzes.</desc>
+ </item>
+ <item>
+ <name>Kompressibilittsfaktor</name>
+ <desc>pV/RT; fr 1 mol eines idealen Gases ist er immer gleich 1.</desc>
+ </item>
+ <item>
+ <name>Kritischer Druck</name>
+ <desc>Druck, der mindestens ausgebt werden muss, um ein Gas bei der kritischen Temperatur zu verflssigen.</desc>
+ <ref>Kritischer Druck</ref>
+ </item>
+ <item>
+ <name>Kritische Temperatur</name>
+ <desc>Hchste Temperatur, bei der ein Gas durch Druckausbung verflssigt werden kann.</desc>
+ </item>
+ <item>
+ <name>Manometer</name>
+ <desc>Gert zur Messung des Druckes in einem Behlter.</desc>
+ <ref>Barometer</ref>
+ </item>
+ <item>
+ <name>Maxwell-Boltzmann-Geschwindigkeitsverteilung</name>
+ <desc>Statistische Verteilung der Geschwindigkeiten der Teilchen in einem Gas.</desc>
+ </item>
+ <item>
+ <name>Mittlere freie Weglnge</name>
+ <desc>Mittlere Weglnge, die ein Teilchen in einem Gas zwischen zwei Kollisionen mit anderen Teilchen zurcklegt.</desc>
+ </item>
+ <item>
+ <name>Molvolumen</name>
+ <desc>Volumen, das ein Mol eines Gases einnimmt. Bei Normbedingungen ist das Volumen 22,414 L</desc>
+ </item>
+ <item>
+ <name>Normbedingungen</name>
+ <desc>Druck p = 101,325 kPa und Temperatur T = 273,15 K.</desc>
+ </item>
+ <item>
+ <name>Partialdruck</name>
+ <desc>Druck, den eine Komponente eines Gasgemisches ausben wrde, wenn sie als einzige im gleichen Volumen anwesend wre.</desc>
+ <ref>Bar,Druck,Pascal</ref>
+ </item>
+ <item>
+ <name>Pascal</name>
+ <desc>SI-Einheit fr den Druck [img]pascal.png[/img]</desc>
+ <ref>Bar,Druck</ref>
+ </item>
+ <item>
+ <name>Temperatur</name>
+ <desc>Zustandsgre von Materie, die bestimmt, in welcher Richtung Wrme fliet. Bei einem Gas ist sie der mittleren kinetischen Energie der Teilchen proportional.</desc>
+ </item>
+ <item>
+ <name>Amorpher Feststoff</name>
+ <desc>Feststoff, in dem die Teilchen nicht zu einem regelmig geordneten Muster angeordnet sind; er hat keinen definierten Schmelzpunkt. Glser sind amorphe Feststoffe.</desc>
+ </item>
+ <item>
+ <name>Dampfdruck</name>
+ <desc>Druck des Dampfes, der mit einer Flssigkeit oder einem Feststoff im Gleichgewicht steht.</desc>
+ </item>
+ <item>
+ <name>Dipol-Dipol-Krfte</name>
+ <desc>Anziehungskrfte zwischen polaren Moleklen aufgrund der Anziehung zwischen entgegengesetzten Polen.</desc>
+ <ref>Intermolekulare Krfte,van der Waals-Krfte</ref>
+ </item>
+ <item>
+ <name>Gefrierpunkt</name>
+ <desc>Temperatur, bei der Flssigkeit und Feststoff miteinander im Gleichgewicht sind.</desc>
+ <ref>Siedepunkt</ref>
+ </item>
+ <item>
+ <name>Schmelzpunkt</name>
+ <desc></desc>
+ <ref>Gefrierpunkt</ref>
+ </item>
+ <item>
+ <name>Intermolekulare Krfte</name>
+ <desc>Krfte zwischen Moleklen, die diese in Feststoffen und Flssigkeiten aneinander halten.</desc>
+ </item>
+ <item>
+ <name>van der Waals-Krfte</name>
+ <desc>Anziehungskrfte zwischen polaren Moleklen aufgrund der Anziehung zwischen entgegengesetzten Polen.</desc>
+ <ref>Intermolekulare Krfte,Dipol-Dipol-Krfte</ref>
+ </item>
+ <item>
+ <name>London-Krfte</name>
+ <desc>Stets vorhandene, zwischenmolekulare Anziehungskrfte. Sie werden durch Anziehung zwischen momentanen Dipolen bewirkt, die durch die Bewegung der Elektronen zustande kommen.</desc>
+ </item>
+ <item>
+ <name>Dispersionskrfte</name>
+ <desc></desc>
+ <ref>London-Krfte</ref>
+ </item>
+ <item>
+ <name>Modifikationen</name>
+ <desc>Unterschiedliche Kristallstrukturen bei ein und derselben Substanz.</desc>
+ </item>
+ <item>
+ <name>Oberflchenspannung</name>
+ <desc>In das Innere einer Flssigkeit gerichtete Kraft, bedingt durch die intermolekularen Anziehungen.</desc>
+ </item>
+ <item>
+ <name>Phasendiagramm</name>
+ <desc>Diagramm, aus dem sich die Existenzbereiche der Phasen einer Substanz in Abhngigkeit von Druck und Temperatur ersehen lassen.</desc>
+ </item>
+ <item>
+ <name>Polymorphie</name>
+ <desc>Das Auftreten mehrerer Modifikationen fr eine feste Substanz.</desc>
+ </item>
+ <item>
+ <name>Schmelzenthalpie</name>
+ <desc>Aufzuwendende Energie, um eine gegebene Menge eines Feststoffes bei gegebener Temperatur zu verflssigen; die Kristallisationsenthalpie hat den gleichen Betrag, jedoch negatives Vorzeichen.</desc>
+ </item>
+ <item>
+ <name>Siedepunkt</name>
+ <desc>Temperatur, bei welcher der Dampfdruck einer Flssigkeit gleich gro ist wie der uere Atmosphrendruck; der normale Siedepunkt wird bei einem Dampfdruck von 101,3 kPa beobachtet.</desc>
+ <ref>Gefrierpunkt</ref>
+ </item>
+ <item>
+ <name>Sublimation</name>
+ <desc>Direkte Verdampfung eines Feststoffes ohne zwischenzeitliche Verflssigung. Bekannt ist dieser Vorgang beim sog. Trockeneis. Hierbei handelt es sich um gefrorenen Kohlendioxid der direkt gasfrmig wird.</desc>
+ </item>
+ <item>
+ <name>Tripelpunkt</name>
+ <desc>Temperatur und Druck, bei dem von einer Substanz die feste, flssige und gasfrmige Phase miteinander im Gleichgewicht stehen.</desc>
+ </item>
+ <item>
+ <name>Verdampfungsenthalpie</name>
+ <desc>Aufzuwendende Energie, um eine gegebene Flssigkeitsmenge bei gegebener Temperatur zu verdampfen; die Kondensationsenthalpie hat den gleichen Betrag, jedoch negatives Vorzeichen.</desc>
+ </item>
+ <item>
+ <name>Viskositt</name>
+ <desc>Widerstand, den eine Flssigkeit dem Flieen entgegensetzt.</desc>
+ </item>
+ <item>
+ <name>Wasserstoffbrcke</name>
+ <desc>Intermolekulare Anziehung zwischen dem Wasserstoff-Atom eines Molekls und einem einsamen Elektronenpaar eines anderen Molekls; das Wasserstoff-Atom muss eine relativ hohe Partialladung haben, das einsame Elektronenpaar muss zu einem elektronegativen Atom gehren (vorzugsweise F, O oder N).</desc>
+ </item>
+ <item>
+ <name>Azeotropes Gemisch</name>
+ <desc>Eine Lsung, die einen hheren oder niedrigeren Dampfdruck als jede ihrer Reinkomponenten hat. Durch Destillation kann sie nicht in ihre Reinkomponenten getrennt werden.</desc>
+ </item>
+ <item>
+ <name>Clausius-Clapeyron-Gleichung</name>
+ <desc>Beziehung zwischen der Verdampfungsenthalpie und den Dampfdrcken p1 und p2 einer Flssigkeit bei zwei verschiedenen Temperaturen: [img]clausius.png[/img]</desc>
+ </item>
+ <item>
+ <name>Elektrolyt</name>
+ <desc>Ein Stoff, der in wssriger Lsung Ionen bildet. Elektrolyten leiten Strom.</desc>
+ </item>
+ <item>
+ <name>Gefrierpunktserniedrigung</name>
+ <desc>Absenkung des Gefrierpunkts eines Lsungsmittels, wenn ein nichtflchtiger Stoff darin gelst ist: [img]gfperniedrigung.png[/img]</desc>
+ <ref>Siedepunktserhhung,Siedepunkt</ref>
+ </item>
+ <item>
+ <name>Henry-Dalton-Gesetz</name>
+ <desc>Die Lslichkeit eines Gases in einer Flssigkeit, mit der es nicht reagiert, ist proportional zum Partialdruck des Gases ber der Lsung.</desc>
+ </item>
+ <item>
+ <name>Hydratation</name>
+ <desc>Umhllung von in Wasser gelsten Teilchen durch Wasser-Molekle aufgrund von anziehenden Krften.</desc>
+ </item>
+ <item>
+ <name>Hydrathlle</name>
+ <desc>In Wasser gelste Teilchen werden von Wassermoleklen umgeben. Diesen Vorgang nennt man auch Hydratation. Die vergrert den Ionenradius auf den sogenannten [b]effektiven Radius[/b]. Dieser Unterschied kann sehr gro sein. Beispielsweise ist hydratisiertes Lithium (das 3.kleinste Ion) grer als die des Csium-Ions (Elementnmmer 55).</desc>
+ </item>
+ <item>
+ <name>Hydratationsenthalpie</name>
+ <desc>Energie, die freigesetzt wird, wenn Ionen aus dem Gaszustand in hydratisierte Ionen in wssriger Lsung berfhrt werden.</desc>
+ <ref>Hydrathlle</ref>
+ </item>
+ <item>
+ <name>Ideale Lsung</name>
+ <desc>Lsung, die dem Raoult-Gesetz gehorcht.</desc>
+ </item>
+ <item>
+ <name>Lsungsenthalpie</name>
+ <desc>Beim Lsen einer bestimmten Stoffmenge freigesetzte oder aufgenommene Wrme; sie hngt von der Temperatur und der Konzentration der Lsung ab.</desc>
+ </item>
+ <item>
+ <name>Massenkonzentration</name>
+ <desc>Konzentrationsangabe einer Lsung als Masse gelster Stoff pro Volumen Lsung.</desc>
+ <ref>Masse</ref>
+ </item>
+ <item>
+ <name>Molalitt</name>
+ <desc>Konzentrationsangabe einer Lsung in Mol gelster Stoffe pro kg Lsungsmittel. Symbol [i]b[/i]</desc>
+ <ref>Molare Masse</ref>
+ </item>
+ <item>
+ <name>Osmose</name>
+ <desc>Fluss von Lsungsmittel-Moleklen durch eine semipermeable Membran von einer verdnnten in eine konzentriertere Lsung.</desc>
+ </item>
+ <item>
+ <name>Prinzip des kleinsten Zwanges</name>
+ <desc>Wird auf ein im Gleichgewicht befindliches System ein Zwang ausgebt, so weicht es aus und ein verlagertes Gleichgewicht stellt sich ein.</desc>
+ </item>
+ <item>
+ <name>Le Chatelier-Prinzip</name>
+ <desc></desc>
+ <ref>Prinzip des kleinsten Zwanges</ref>
+ </item>
+ <item>
+ <name>Raoult-Gesetz</name>
+ <desc>Der Partialdruck einer Komponente einer idealen Lsung ist gleich Stoffmengenanteil der Komponente mal Dampfdruck der einen Komponente.</desc>
+ <ref>Dalton-Gesetz der Partialdrcke</ref>
+ </item>
+ <item>
+ <name>Siedepunktserhhung</name>
+ <desc>Erhhung des Siedepunkts eines Lsungsmittels, wenn ein nichtflchtiger Stoff darin gelst ist: [img]sdperhoehung.png[/img]</desc>
+ <ref>Gefrierpunktserniedrigung,Siedepunkt</ref>
+ </item>
+ <item>
+ <name>Gesttigte Lsung</name>
+ <desc>Wenn man in ein Lsungsmittel eine grere Menge eines Stoffes hinzufgt, als sich darin lsen kann, so stellt sich eine Gleichgewicht zwischen der Lsung und dem Bodensatz ein. Es geht also stndig ungelster Stoff in Lsung und gelster Stoff wird ausgeschieden. Die Konzentration der Lsung bleibt dabei konstant.</desc>
+ </item>
+ <item>
+ <name>Solvatation</name>
+ <desc>Umhllung von gelsten Teilchen durch Lsungsmittel-Molekle aufgrund von anziehenden Krften.</desc>
+ </item>
+ <item>
+ <name>Van't Hoff-Faktor</name>
+ <desc>Verhltnis der beobachteten Gefrierpunktserniedrigung, Siedepunktserhhung, Dampfdruckerniedrigung oder des osmotischen Druckes einer Elektrolyt-Lsung relativ zum Erwartungswert fr eine Nichtelektrolyt-Lsung.</desc>
+ <ref>Siedepunktserhhung,Gefrierpunktserniedrigung,Osmose</ref>
+ </item>
+ <item>
+ <name>Volumenanteil</name>
+ <desc>Konzentrationsangabe als Verhltnis des Volumens einer Komponente zur Summe der Volumina aller Komponenten.</desc>
+ </item>
+ <item>
+ <name>Amphotere Verbindungen</name>
+ <desc>Verbindungen, die sowohl saure wie basische Eigenschaften hat und sowohl mit Basen als auch mit Suren reagiert.</desc>
+ </item>
+ <item>
+ <name>quivalentkonzentration</name>
+ <desc>Stoffmengenkonzentration multipliziert mit der quivalentzahl (alte Bezeichnung: Normalitt).</desc>
+ </item>
+ <item>
+ <name>quivalentmasse</name>
+ <desc>Molare Masse geteilt durch die quivalentzahl.</desc>
+ </item>
+ <item>
+ <name>quivalentzahl</name>
+ <desc>Anzahl [i]z[/i] der fr eine Reaktion mageblichen Teilchen (Protonen, Hydroxyd-Ionen, Elektronen), die von einem Molekl eines Reagenzes zur Verfgung gestellt werden kann.</desc>
+ </item>
+ <item>
+ <name>quivalenzpunkt</name>
+ <desc>Punkt whrend einer Titration, bei dem quivalente Mengen der Reaktanden zusammengegeben wurden.</desc>
+ </item>
+ <item>
+ <name>Arrhenius-Base</name>
+ <desc>Verbindung, die in Wasser Hydroxyd-Ionen bildet.</desc>
+ <ref>Arrhenius-Sure</ref>
+ </item>
+ <item>
+ <name>Arrhenius-Neutralisation</name>
+ <desc>Reaktion zwischen H+(aq)- und OH-(aq)-Ionen unter Bildung von Wasser.</desc>
+ </item>
+ <item>
+ <name>Arrhenius-Sure</name>
+ <desc>Verbindung, die in Wasser Protonen abgibt.</desc>
+ <ref>Arrhenius-Base</ref>
+ </item>
+ <item>
+ <name>Base</name>
+ <desc>Nach Arrhenius ein Stoff, der in wssriger Lsung Hydroxyd-Ionen bildet. Nach Brnstedt ein Stoff, der Protonen anlagern kann. Nach Lewis ein Elektronenpaar-Donator.</desc>
+ <ref>Sure</ref>
+ </item>
+ <item>
+ <name>Basisches Oxid</name>
+ <desc>Oxid, das mit Wasser eine Base und mit Suren Salze bildet.</desc>
+ </item>
+ <item>
+ <name>Disproportionierung</name>
+ <desc>Reaktion, bei der eine Substanz gleichzeitig zum Teil oxidiert und zum Teil reduziert wird.</desc>
+ <ref>Komproportionierung</ref>
+ </item>
+ <item>
+ <name>Einprotonige Sure</name>
+ <desc>Sure, die nur ein Proton pro Molekl abgeben kann.</desc>
+ </item>
+ <item>
+ <name>Fllung</name>
+ <desc>Reaktion in einer Lsung, bei der eine unlsliche Verbindung, ein Niederschlag, gebildet wird.</desc>
+ </item>
+ <item>
+ <name>Indikator</name>
+ <desc>Substanz, die z.B. bei einer Titration das Erreichen des quivalenzpunktes anzeigt. Ein Sure-Base-Indikator hat verschiedene Farben bei verschiedenen pH-Werten.</desc>
+ </item>
+ <item>
+ <name>Komproportionierung</name>
+ <desc>Reaktion, bei der zwei Verbindungen, in denen das gleiche Element mit unterschiedlichen Oxidationszahlen vorliegt, zu einer Verbindung mit einer dazwischen liegenden Oxidationszahl reagieren.</desc>
+ <ref>Disproportionierung</ref>
+ </item>
+ <item>
+ <name>Mehrprotonige Sure</name>
+ <desc>Sure, die mehr als ein Proton pro Molekl abgeben kann.</desc>
+ </item>
+ <item>
+ <name>Metathese-Reaktion</name>
+ <desc>Reaktion zwischen zwei Verbindungen, bei der Kationen und Anionen ihre Partner tauschen.</desc>
+ </item>
+ <item>
+ <name>Netto-Ionengleichung</name>
+ <desc>Reaktionsgleichung, bei der nur die miteinander reagierenden Ionen bercksichtigt werden.</desc>
+ </item>
+ <item>
+ <name>Neutralisation</name>
+ <desc>Reaktion zwischen einer Sure und einer Base.</desc>
+ </item>
+ <item>
+ <name>Normallsung</name>
+ <desc>Lsung mit einer definierten quivalentkonzentration.</desc>
+ </item>
+ <item>
+ <name>Oxidation</name>
+ <desc>Teil einer Reaktion, bei der es zur Abgabe von Elektronen, d.h. zur Erhhung der Oxidationszahl kommt.</desc>
+ </item>
+ <item>
+ <name>Oxidationsmittel</name>
+ <desc>Substanz, die bei einer chemischen Reaktion reduziert wird und dadurch die Oxidation einer anderen Substanz bewirkt.</desc>
+ <ref>Oxidation</ref>
+ </item>
+ <item>
+ <name>Oxidationszahl</name>
+ <desc>Fiktive Ionenladung an einem Atom, die sich ergibt, wenn man alle Elektronenpaare von kovalenten Bindungen dem jeweils elektronegativeren Bindungspartner zuteilt.</desc>
+ <ref>Oxidation</ref>
+ </item>
+ <item>
+ <name>Oxonium-Ion (Hydronium-Ion)</name>
+ <desc>Ion, das aus einem Proton und einem Wasser-Molekl gebildet wird.</desc>
+ </item>
+ <item>
+ <name>Reduktion</name>
+ <desc>Teil einer Reaktion, bei der es zur Aufnahme von Elektronen, d.h. zur Erniedrigung der Oxidationszahl kommt.</desc>
+ </item>
+ <item>
+ <name>Reduktionsmittel</name>
+ <desc>Substanz, die bei einer chemischen Reaktion oxidiert wird und dadurch die Reduktion einer anderen Substanz bewirkt.</desc>
+ </item>
+ <item>
+ <name>Sure</name>
+ <desc>Nach Arrhenius, eine Wasserstoff-Verbindung, die in wssriger Lsung unter Abgabe von H(+)-Ionen und Bildung von Hydronium-Ionen dissoziiert. Nach Brnstedt eine Verbindung, die H(+)-Ionen abgeben kann (Protonen-Donator). Nach Lewis ein Elektronenpaar-Akzeptor.</desc>
+ <ref>Base</ref>
+ </item>
+ <item>
+ <name>Sureanhydrid, saures Oxid</name>
+ <desc>Nichtmetalloxid, das mit Wasser eine Sure bildet.</desc>
+ </item>
+ <item>
+ <name>Schwache Suren und Basen</name>
+ <desc>Suren und Basen, die nur partiell Hydronium- bzw. Hydroxyd-Ionen in wssriger Lsung bilden, also nicht vollstndig dissoziieren.</desc>
+ </item>
+ <item>
+ <name>Starke Suren und Basen</name>
+ <desc>Suren und Basen, die in wssriger Lsung vollstndig dissoziieren.</desc>
+ </item>
+ <item>
+ <name>Volumetrische Analyse</name>
+ <desc>Quantitative chemische Analyse, die auf der Messung von Lsungsvolumina basiert.</desc>
+ </item>
+ <item>
+ <name>Adsorption</name>
+ <desc>Vorgang, bei dem Molekle an der Oberflche eines Feststoffs haften bleiben.</desc>
+ </item>
+ <item>
+ <name>Aktivierter Komplex (bergangszustand)</name>
+ <desc>Instabile Atom-Anordnung, die vorbergehend im Verlaufe einer chemischen Reaktion auftritt.</desc>
+ </item>
+ <item>
+ <name>Aktivierungsenergie</name>
+ <desc>Energiedifferenz zwischen der potentiellen Energie des aktivierten Komplexes und derjenigen der Reaktanden.</desc>
+ </item>
+ <item>
+ <name>Arrhenius-Gleichung</name>
+ <desc>Beziehung zwischen der Geschwindigkeitskonstanten, der Aktivierungsenergie und der Temperatur fr eine chemische Reaktion[img]arrhenius.png[/img]</desc>
+ </item>
+ <item>
+ <name>Chemisorption</name>
+ <desc>Adsorption aufgrund von chemischen Bindungen zwischen einem adsorbierten Stoff und der Oberflche des adsorbierenden Feststoffes; dadurch werden die chemischen Eigenschaften der adsorbierten Molekle verndert und Katalyseprozesse ermglicht.</desc>
+ </item>
+ <item>
+ <name>Effektive Kollision</name>
+ <desc>Kollision zwischen Teilchen, die zu einer Reaktion fhrt.</desc>
+ </item>
+ <item>
+ <name>Geschwindigkeitsbestimmender Schritt</name>
+ <desc>Der langsamste Schritt bei einer mehrstufigen Reaktion; von ihm hngt die Geschwindigkeit der Gesamtreaktion ab.</desc>
+ </item>
+ <item>
+ <name>Geschwindigkeitsgesetz</name>
+ <desc>Mathematischer Ausdruck, der die Reaktionsgeschwindigkeit und die Reaktandenkonzentrationen in Beziehung setzt.[img]rggeschwindigkeit.png[/img]</desc>
+ </item>
+ <item>
+ <name>Geschwindigkeitskonstante</name>
+ <desc>Proportionalittskonstante in einem Geschwindigkeitsgesetz.</desc>
+ </item>
+ <item>
+ <name>Halbwertszeit</name>
+ <desc>Bentigte Zeit, bis bei einer Reaktion die Hlfte der Reaktanden verbraucht ist. Bei radioaktiven Substanzen: Zeit, die vergeht, bis die Hlfte der Probe zerfallen ist.</desc>
+ </item>
+ <item>
+ <name>Heterogene Katalyse</name>
+ <desc>Reaktionsbeschleunigung an einem Katalysator, der in einer anderen Phase als die Reaktanden vorliegt.</desc>
+ <ref>Homogene Katalyse,Katalysator</ref>
+ </item>
+ <item>
+ <name>Homogene Katalyse</name>
+ <desc>Reaktionsbeschleunigung durch einen Katalysator, der in der gleichen Phase wie die Reaktanden vorliegt.</desc>
+ <ref>Heterogene Katalyse,Katalysator</ref>
+ </item>
+ <item>
+ <name>Katalysator</name>
+ <desc>Substanz, die eine chemische Reaktion beschleunigt, ohne selbst verbraucht zu werden. Es findet dabei keine Gleichgewichtsverlagerung statt da sowohl die Hin- als auch die Rck-Reaktion beschleunigt werden.</desc>
+ <ref>Homogene Katalyse,Heterogene Katalyse</ref>
+ </item>
+ <item>
+ <name>Kettenreaktion</name>
+ <desc>Vielstufige Reaktion, bei der nach einem Startschritt zwei Reaktionsschritte abwechselnd vielfach wiederholt werden.</desc>
+ </item>
+ <item>
+ <name>Nucleophile Substitution</name>
+ <desc>Reaktion, bei der in einem Molekl eine nucleophile Gruppe (Lewis-Base) durch eine andere substituiert wird. Bei der SN1-Reaktion wird zuerst die eine Gruppe abgespalten, dann die neue Gruppe angelagert; bei der SN2-Reaktion verlaufen Anlagerung und Abspaltung synchron.</desc>
+ <ref>Substitution</ref>
+ </item>
+ <item>
+ <name>Reaktionsgeschwindigkeit</name>
+ <desc>Konzentrationsabnahme eines Reaktanden oder Konzentrationszunahme eines Reaktionsprodukts pro Zeiteinheit; sie ndert sich in der Regel im Verlaufe der Reaktion</desc>
+ <ref>Reaktionskinetik</ref>
+ </item>
+ <item>
+ <name>Reaktionskinetik</name>
+ <desc>Lehre der Reaktionsgeschwindigkeiten und Reaktionsmechanismen.</desc>
+ <ref>Reaktionsgeschwindigkeit</ref>
+ </item>
+ <item>
+ <name>Reaktionsmechanismus</name>
+ <desc>Beschreibung des Ablaufs einer chemischen Reaktion im einzelnen.</desc>
+ </item>
+ <item>
+ <name>Reaktionsordnung</name>
+ <desc>Die Summe der Exponenten der Konzentrationen im Geschwindigkeitsgesetz.</desc>
+ <ref>Reaktionskinetik</ref>
+ </item>
+ <item>
+ <name>Theorie des bergangszustands</name>
+ <desc>Theorie, bei der das vorbergehende Auftreten eines bergangszustands (oder aktivierten Komplexes) im Verlaufe eine Reaktionsschrittes angenommen wird.</desc>
+ </item>
+ <item>
+ <name>Zwischenprodukt</name>
+ <desc>Substanz, die im Verlaufe einer chemischen Reaktion entsteht und wieder verbraucht wird.</desc>
+ </item>
+ <item>
+ <name>Chemisches Gleichgewicht</name>
+ <desc>Zustand einer reversiblen chemischen Reaktion, bei dem die Hinreaktion gleich schnell wie die Rckreaktion abluft.</desc>
+ </item>
+ <item>
+ <name>Gleichgewichtskonstante</name>
+ <desc>Die Konstante im Massenwirkungsgesetz. Wird es mit Stoffmengenkonzentrationen formuliert, so erhlt man das Symbol Kc, wird es mit Partialdrcken von Gasen formuliert, so ist das Symbol Kp.
+ </desc>
+ <ref>Chemisches Gleichgewicht,Massenwirkungsgesetz</ref>
+ </item>
+ <item>
+ <name>Heterogenes Gleichgewicht</name>
+ <desc>Gleichgewicht, an dem Substanzen in verschiedenen Phasen beteiligt sind.</desc>
+ <ref>Chemisches Gleichgewicht</ref>
+ </item>
+ <item>
+ <name>Massenwirkungsgesetz</name>
+ <desc>Fr ein System im chemischen Gleichgewicht gilt: Das Produkt aus den Stoffmengenkonzentrationen (oder Partialdrcken) der Substanzen auf der rechten Seite der Reaktionsgleichung, jeweils potenziert mit den zugehrigen Koeffizienten der Reaktionsgleichung, geteilt durch das entsprechende Produkt der Substanzen auf der linken Seite der Reaktionsgleichung, ist gleich der Gleichgewichtskonstanten. [img]mwg.png[/img]</desc>
+ <ref>Chemisches Gleichgewicht</ref>
+ </item>
+ <item>
+ <name>Reaktionsquotient</name>
+ <desc>Zahlenwert, der sich ergibt, wenn beliebige Stoffmengenkonzentrationen (oder Partialdrcke) in den Ausdruck des Massenwirkungsgesetzes eingesetzt werden. Wenn Q = K, so herrscht Gleichgewicht; wenn Q kleiner K, so luft die Reaktion nach rechts ab, wenn Q grer K, so luft sie nach links ab.</desc>
+ <ref>Massenwirkungsgesetz</ref>
+ </item>
+ <item>
+ <name>Elektrophile Verdrngungsreaktion</name>
+ <desc>Reaktion, bei der eine Lewis-Sure eine andere, schwchere Lewis-Sure verdrngt.</desc>
+ <ref>Nucleophile Verdrngungsreaktion</ref>
+ </item>
+ <item>
+ <name>Konjugiertes Sure-Base-Paar</name>
+ <desc>Brnsted-Sure-Base-Paar, das durch Abgabe bzw. Aufnahme eines Protons in Beziehung steht. In folgendem Beispiel ist steht S fr Sure und B fr Base: [img]konjsbpaar.png[/img]</desc>
+ </item>
+ <item>
+ <name>Lewis-Base</name>
+ <desc>Teilchenart, die ein Elektronenpaar zur Verfgung stellen kann unter Ausbildung einer kovalenten Bindung: eine nucleophile Spezies.</desc>
+ <ref>Lewis-Sure,Base,Sure</ref>
+ </item>
+ <item>
+ <name>Lewis-Sure</name>
+ <desc>Teilchenart, die eine kovalente Bindung mit dem von einer Base zur Verfgung gestellten Elektronenpaar bilden kann: eine elektrophile Spezies.</desc>
+ <ref>Lewis-Base,Base,Sure</ref>
+ </item>
+ <item>
+ <name>Lsungsmittelbezogene Base</name>
+ <desc>Substanz, die in Lsung das charakteristische Anion des Lsungsmittel bildet.</desc>
+ <ref>Lsungsmittelbezogene Sure</ref>
+ </item>
+ <item>
+ <name>Lsungsmittelbezogene Sure</name>
+ <desc>Substanz, die in Lsung das charakteristische Kation des Lsungsmittel bildet.</desc>
+ <ref>Lsungsmittelbezogene Base</ref>
+ </item>
+ <item>
+ <name>Nivellierender Effekt</name>
+ <desc>Effekt des Lsungsmittels auf die Surestrke von Brnsted-Suren und -Basen. Eine gelste Sure kann nicht strker sauer wirken als die zum Lsungsmittel konjugierte Sure; eine gelste Base kann nicht strker basisch wirken als die zum Lsungsmittel konjugierte Base.</desc>
+ </item>
+ <item>
+ <name>Nucleophile Verdrngungsreaktion</name>
+ <desc>Nucleophile Substitution, bei der eine Lewis-Base eine andere, schwchere Lewis-Base verdrngt.</desc>
+ <ref>Elektrophile Verdrngungsreaktion</ref>
+ </item>
+ <item>
+ <name>Aktivitt</name>
+ <desc>Mit dem Aktivittskoeffizienten [i]f[/i] korrigierte Stoffmengenkonzentration mit dem Symbol [i]a[/i] um Abweichungen vom Massenwirkungsgesetz zu korrigieren. Je grer die Konzentration der Lsung, umso mehr weicht [i]f[/i] von 1 ab.</desc>
+ </item>
+ <item>
+ <name>Basenkonstante</name>
+ <desc>Gleichgewichtskonstante fr die Reaktion einer Base mit Wasser.</desc>
+ </item>
+ <item>
+ <name>Dissoziationsgrad</name>
+ <desc>Anteil der Gesamtkonzentration eines schwachen Elektrolyten, der zu Ionen dissoziiert ist.</desc>
+ </item>
+ <item>
+ <name>Henderson-Hasselbalch-Gleichung</name>
+ <desc>Gleichung zur Berechnung des pH-Werts einer Pufferlsung: [img]henderson.png[/img] </desc>
+ </item>
+ <item>
+ <name>Ionenprodukt des Wassers</name>
+ <desc>Produkt aus der Protonenkonzentration mit der Hydroxydionenkonzentration in wssrigen Lsungen; bei 25C gilt: [img]ionenprodukt.png[/img]</desc>
+ </item>
+ <item>
+ <name>pH-Wert</name>
+ <desc>Der negative Logarithmus der H+(aq)-Ionenkonzentration: [img]ph.png[/img]</desc>
+ <ref>pOH-Wert,pH-Wert</ref>
+ </item>
+ <item>
+ <name>pK-Wert</name>
+ <desc>Der negative Logarithmus einer Gleichgewichtskonstanten: [img]pk.png[/img]</desc>
+ </item>
+ <item>
+ <name>pOH-Wert</name>
+ <desc>Der negative Logarithmus der OH-(aq)-Ionenkonzentration.</desc>
+ <ref>pH-Wert,pK-Wert</ref>
+ </item>
+ <item>
+ <name>Pufferlsung</name>
+ <desc>Lsung, die eine schwache Sure und ihre konjugierte Base enthlt. Sie ndert ihren pH-Wert nur geringfgig bei Zugabe begrenzter Mengen von Suren oder Basen.</desc>
+ </item>
+ <item>
+ <name>Suredissoziationskonstante</name>
+ <desc>Gleichgewichtskonstante fr die Dissoziation einer Sure.</desc>
+ </item>
+ <item>
+ <name>Titrationskurve</name>
+ <desc>Graph zur Darstellung des pH-Werts oder des Reduktionspotentials als Funktion der zugegebenen Reagenzmenge im Verlaufe einer Titration.</desc>
+ </item>
+ <item>
+ <name>Amphoteres Hydroxid</name>
+ <desc>Schwerlsliches Hydroxid, das sowohl bei Zusatz von Basen wie auch von Suren in Lsung geht.</desc>
+ </item>
+ <item>
+ <name>Gleichionige Zustze</name>
+ <desc>Wird eine an einem Gleichgewicht beteiligte Ionenart einer Lsung zugesetzt, so verschiebt sich das Gleichgewicht. Gleichionige Zustze verringern im allgemeinen die Lslichkeit von schwerlslichen Verbindungen.
+ </desc>
+ </item>
+ <item>
+ <name>Ionenprodukt bei schwerlslichen Verbindungen</name>
+ <desc>Das wie beim Lslichkeitsprodukt gebildete mathematische Produkt der Ionenkonzentrationen einer Lsung. Ist es grer als das Lslichkeitsprodukte, so kommt es zur Fllungsreaktion.</desc>
+ </item>
+ <item>
+ <name>Komplex</name>
+ <desc>Verbindung, die durch Anlagerung von Liganden (Lewis-Basen) an ein Zentralatom (Lewis-Sure) entsteht.</desc>
+ </item>
+ <item>
+ <name>Komplexbildungskonstante</name>
+ <desc>Gleichgewichtskonstante fr die Bildungsreaktion eines Komplexes.</desc>
+ <ref>Komplexzerfallskonstante</ref>
+ </item>
+ <item>
+ <name>Komplexzerfallskonstante</name>
+ <desc>Gleichgewichtskonstante fr den Zerfall eines Komplexes: [img]kp.png[/img]</desc>
+ <ref>Komplexbildungskonstante</ref>
+ </item>
+ <item>
+ <name>Dissoziationskonstante</name>
+ <desc>Komplexzerfallskonstante</desc>
+ <ref>Komplexzerfallskonstante</ref>
+ </item>
+ <item>
+ <name>Lslichkeitsprodukt</name>
+ <desc>Gleichgewichtskonstante fr den Vorgang der Auflsung einer schwerlslichen Verbindung. Die schwerlsliche Verbindung ("Bodenkrper") befindet sich im Gleichgewicht mit Ionen in der Lsung.</desc>
+ </item>
+ <item>
+ <name>Salzeffekt</name>
+ <desc>Zusatz von Salzen zu einer Lsung erhht die Lslichkeit von schwerlslichen Verbindungen.</desc>
+ </item>
+ <item>
+ <name>Thermodynamik</name>
+ <desc>Die Thermodynamik beschreibt die Vernderung von Energien im Laufe eines Prozesses</desc>
+ </item>
+ <item>
+ <name>1. Hauptsatz der Thermodynamik</name>
+ <desc>Energie kann von einer Form in eine andere Form umgewandelt werden. Die Gesamtsumme aller Energieformen ist konstant, sie kann weder erzeugt noch vernichtet werden.</desc>
+ </item>
+ <item>
+ <name>2. Hauptsatz der Thermodynamik</name>
+ <desc>Bei spontanen Zustandsnderungen eines Systems vergrert sich dessen Entropie, die Unordnung des Systems nimmt zu.</desc>
+ </item>
+ <item>
+ <name>Zustandsgre</name>
+ <desc>Die Zustandsgre eines Systems ist nur von den momentanen Bedingungen, z.B. Druck und Temperatur abhngig, nicht jedoch davon wie dieser Zustand erreicht wurde, z.B. die Innere Energie [i]U[/i]</desc>
+ </item>
+ <item>
+ <name>Verfahrensgre</name>
+ <desc>Die Verfahrensgre eines Systems ist von der Art und Weise wie der momentane Zustand des Systems erreicht wurde abhngig, z.B. die Volumenarbeit</desc>
+ </item>
+ <item>
+ <name>System</name>
+ <desc>Eingegrenzter Bereich, der fr den aktuell ablaufenden Vorgang betrachtet wird. ber die Grenzen des Systems knnen je nach Randbedingungen Energie und Stoffe ausgetauscht werden</desc>
+ </item>
+ <item>
+ <name>Umgebung</name>
+ <desc>Alles was auerhalb des Systems ist. Die Umgebung kann Stoff und Energie mit dem System austauschen</desc>
+ </item>
+ <item>
+ <name>Innere Energie</name>
+ <desc>Die Summe aller mglichen Energien, die ein System abgeben kann</desc>
+ </item>
+ <item>
+ <name>Entropie</name>
+ <desc>Ist ein Ma fr die Unordnung in einem System. Bei freiwillig ablaufenden Prozessen nimmt die Entropie und somit die Unordnung immer zu.</desc>
+ </item>
+ <item>
+ <name>Absolute Standardentropie</name>
+ <desc>Ist die Entropie die 1 mol eines Stoffes enthlt, wenn er von einem perfekten Kristallgitter bei 0 K in den momentanen Zustand berfhrt wurde</desc>
+ </item>
+ <item>
+ <name>Standardreaktionsentropie</name>
+ <desc>Ist die Differenz der Entropie zwischen den Edukten und den Produkten einer Reaktion.</desc>
+ </item>
+ <item>
+ <name>Freie Enthalpie</name>
+ <desc>Auch Gibbsche Enthalpie genannt. Sie beinhaltet die Enthalpienderungen des betrachteten Systems sowie der Umgebung. Es gilt: [img]freieenthalpie.png[/img]</desc>
+ </item>
+ <item>
+ <name>Freie Standardenthalpie</name>
+ <desc>Beschreibt die Vernderung der Enthalpien einer Reaktion wenn diese bei Standardbedingungen, Druck = 1013 hPa, Temperatur meist 298 K durchgefhrt wird. Die Edukte und Produkte liegen dabei im Standardzustand vor.</desc>
+ </item>
+ <item>
+ <name>Freie Standardbildungsenthalpie</name>
+ <desc>Gibt die Reaktionsenthalpie fr 1 mol einer Substanz an, wenn diese aus den Elementen im Standardzustand hergestellt wird.</desc>
+ </item>
+ <item>
+ <name>Gleichgewicht</name>
+ <desc>Zustand bei dem die Reaktionsenthalpie eines Systems = 0 ist.</desc>
+ </item>
+ <item>
+ <name>Anode</name>
+ <desc>Elektrode, an der die Oxidation erfolgt.</desc>
+ <ref>Kathode</ref>
+ </item>
+ <item>
+ <name>Bezugselektrode</name>
+ <desc>Elektrode, deren Potential unabhngig von den Verhltnissen in der Lsung ist.</desc>
+ </item>
+ <item>
+ <name>Brennstoffzelle</name>
+ <desc>Galvanisches Element, bei dem die Reaktionsenthalpie eines Verbrennungsvorgangs direkt in elektrische Energie umgewandelt wird.</desc>
+ </item>
+ <item>
+ <name>Daniell-Element</name>
+ <desc>Galvanische Zelle mit Zink als Anode und Kupfer als Kathode.</desc>
+ <ref>Elektrode,Elektrolyse</ref>
+ </item>
+ <item>
+ <name>Elektrode</name>
+ <desc>Metallisch leitender Gegenstand, der zur Zu- oder Ableitung von elektrischem Strom in einen Elektrolyten eingetaucht ist.</desc>
+ </item>
+ <item>
+ <name>Elektrolyse</name>
+ <desc>Chemische Reaktion, die durch elektrischen Strom bewirkt wird.</desc>
+ </item>
+ <item>
+ <name>Elektrolytische Leitung</name>
+ <desc>Leitung von elektrischem Strom durch die Wanderung von Ionen durch eine Salzschmelze oder -lsung. Auch Leitung zweiter Ordnung</desc>
+ </item>
+ <item>
+ <name>Elektromotorische Kraft (EMK)</name>
+ <desc>Potentialdifferenz zwischen den Elektroden einer galvanischen Zelle; sie ist ein Ma fr die Tendenz zum Ablaufen einer Redoxreaktion.</desc>
+ <ref>Elektrode</ref>
+ </item>
+ <item>
+ <name>Faraday-Gesetz</name>
+ <desc>Um durch Elektrolyse ein quivalent eines Stoffes umzusetzen, werden F = 96485 C bentigt; F ist die Faraday-Konstante, sie entspricht der elektrischen Ladung von 1 mol Elektronen.</desc>
+ </item>
+ <item>
+ <name>Galvanische Zelle</name>
+ <desc>Zelle, in der eine Redoxreaktion zur Gewinnung von elektrischer Energie ausgenutzt wird.</desc>
+ </item>
+ <item>
+ <name>Halbzelle</name>
+ <desc>Hlfte einer galvanischen Zelle, in der entweder eine Oxidation oder eine Reduktion abluft.</desc>
+ <ref>Galvanische Zelle</ref>
+ </item>
+ <item>
+ <name>Kathode</name>
+ <desc>Elektrode, an der die Reduktion erfolgt.</desc>
+ <ref>Anode</ref>
+ </item>
+ <item>
+ <name>Konzentrationskette</name>
+ <desc>Galvanische Zelle, deren Halbzellen die gleichen Stoffe in unterschiedlichen Konzentrationen enthalten.</desc>
+ </item>
+ <item>
+ <name>Lokalelement</name>
+ <desc>Kleines, kurzgeschlossenes galvanisches Element an der Berhrungsstelle von zwei verschiedenen Metallen; ist eine Elektrolytflssigkeit anwesend, so wird das unedlere Metall oxidiert.</desc>
+ </item>
+ <item>
+ <name>Nernst-Gleichung</name>
+ <desc>Gleichung zur Berechnung des Reduktionspotentials in Abhngigkeit von Temperatur und Konzentrationen: [img]nernst.png[/img]</desc>
+ <ref>Oxidation,Reduktion,Elektromagnetische Kraft (EMK)</ref>
+ </item>
+ <item>
+ <name>Normalpotential</name>
+ <desc>Halbzellenpotential relativ zur Norm-Wasserstoffelektrode; alle anwesenden Stoffe mssen im Standardzustand vorliegen.</desc>
+ <ref>Norm-Wasserstoffelektrode</ref>
+ </item>
+ <item>
+ <name>Norm-Wasserstoffelektrode</name>
+ <desc>Bezugselektrode, deren Normalpotential willkrlich auf0V festgelegt ist. Sie besteht aus einem Platindraht, der von Wasserstoff bei 101,3 kPa umsplt wird und in eine Lsung mit Protonenaktivitt von 1 taucht.</desc>
+ </item>
+ <item>
+ <name>Potentiometrische Titration</name>
+ <desc>Titration, bei welcher der quivalenzpunkt durch Messung des Potentials einer Elektrode ermittelt wird, das von der Konzentration des zu bestimmenden Stoffes abhngt.</desc>
+ </item>
+ <item>
+ <name>Reduktionspotential</name>
+ <desc>Halbzellenpotential fr einen Reduktionsprozess.</desc>
+ </item>
+ <item>
+ <name>Salzbrcke</name>
+ <desc>Rohr, das mit einer Salzlsung gefllt ist und die zwei Halbzellen einer galvanischen Zelle verbindet.</desc>
+ </item>
+ <item>
+ <name>Silbercoulombmeter</name>
+ <desc>Elektrolysezelle, in der Silber abgeschieden wird; aus der abgeschiedenen Silbermenge kann die durchflossene Elektrizittsmenge berechnet werden.</desc>
+ </item>
+ <item>
+ <name>Spannungsreihe</name>
+ <desc>
+ Werden zwei Metalle in einen Behlter mit einer Sure getaucht, so luft eine chemische Reaktion ab, bei der Ionen vom einen Stoff zum anderen wandern und zum Schluss eine ungleichgewichtige Verteilung von freien Elektronen an den beiden Stoffen angelagert ist (Redoxreaktion). Aus der unterschiedlichen Verteilung der Elektronen ergibt sich stets ein bestimmtes Ma der elektrischen Spannung. Metalle, die dabei gegenber dem Wasserstoff in der Sure eine positive Spannung haben, werden edle, die mit einer negativen Spannung als unedle Metalle bezeichnet. Die Auflistung in der Reihenfolge der einzelnen Element-Spannungen ergibt die elektrochemische Spannungsreihe.
+ </desc>
+ <ref>Nernst-Gleichung,Reduktion,Oxidation,Spannung</ref>
+ </item>
+ <item>
+ <name>Spannung</name>
+ <desc>
+ Die Elektrische Spannung ist eine physikalische Gre, die angibt, wie viel Arbeit ntig ist bzw. frei wird, wenn ein Objekt mit einer bestimmten Ladung entlang eines elektrischen Feldes bewegt wird. Die Einheit ist Volt (V).
+ </desc>
+ <ref>Spannungsreihe</ref>
+ </item>
+ <item>
+ <name>berspannung</name>
+ <desc>Zustzliche Spannung, die ber das theoretische Zellenpotential hinaus angelegt werden muss, um eine Elektrolysereaktion in Gang zu bringen.</desc>
+ <ref>Spannung</ref>
+ </item>
+ <item>
+ <name>Substitution</name>
+ <desc>Reaktion, bei der ein Substituent durch einen anderen Substituent ersetzt wird.</desc>
+ <ref>Nucleophile Substitution</ref>
+ </item>
+</wissen>
diff --git a/kalzium/src/data/toolpics/Makefile.am b/kalzium/src/data/toolpics/Makefile.am new file mode 100644 index 00000000..a47cff52 --- /dev/null +++ b/kalzium/src/data/toolpics/Makefile.am @@ -0,0 +1,42 @@ +xml_DATA = abzug.jpg \ + becherglas.jpg \ + brechungsmesser.jpg \ + brenner.jpg \ + destillierbruecke.jpg \ + dsc.jpg \ + erlenmeyerkolben.jpg \ + exikator.jpg \ + halter.jpg \ + heizplatte.jpg \ + hplc.jpg \ + kolbenprober.png \ + korkring.jpg \ + messzylinder.jpg \ + moerser.jpg \ + phpapier.jpg \ + pileusball.jpg \ + pipette.jpg \ + rg-halter.jpg \ + rg.jpg \ + rg-staender.jpg \ + rotationsverdampfer.jpg \ + rueckflusskuehler.jpg \ + ruehrfisch.jpg \ + rundkolben.jpg \ + scheidetrichter.jpg \ + schutzbrille.jpg \ + spatel.jpg \ + spritzflasche.jpg \ + thermometer2.jpg \ + thermometer.jpg \ + tonschale.jpg \ + trichter.jpg \ + trockenrohr.jpg \ + tropftrichter.jpg \ + uhrglas.jpg \ + verteiler.jpg \ + vollpipette.jpg \ + waage.jpg \ + wasserstrahlpumpe.jpg + +xmldir = $(kde_datadir)/kalzium/data/toolpics diff --git a/kalzium/src/data/toolpics/abzug.jpg b/kalzium/src/data/toolpics/abzug.jpg Binary files differnew file mode 100644 index 00000000..36c81b2c --- /dev/null +++ b/kalzium/src/data/toolpics/abzug.jpg diff --git a/kalzium/src/data/toolpics/becherglas.jpg b/kalzium/src/data/toolpics/becherglas.jpg Binary files differnew file mode 100644 index 00000000..10b5d6f3 --- /dev/null +++ b/kalzium/src/data/toolpics/becherglas.jpg diff --git a/kalzium/src/data/toolpics/brechungsmesser.jpg b/kalzium/src/data/toolpics/brechungsmesser.jpg Binary files differnew file mode 100644 index 00000000..d7cb3c08 --- /dev/null +++ b/kalzium/src/data/toolpics/brechungsmesser.jpg diff --git a/kalzium/src/data/toolpics/brenner.jpg b/kalzium/src/data/toolpics/brenner.jpg Binary files differnew file mode 100644 index 00000000..44cd5f1a --- /dev/null +++ b/kalzium/src/data/toolpics/brenner.jpg diff --git a/kalzium/src/data/toolpics/destillierbruecke.jpg b/kalzium/src/data/toolpics/destillierbruecke.jpg Binary files differnew file mode 100644 index 00000000..83cc45db --- /dev/null +++ b/kalzium/src/data/toolpics/destillierbruecke.jpg diff --git a/kalzium/src/data/toolpics/dsc.jpg b/kalzium/src/data/toolpics/dsc.jpg Binary files differnew file mode 100644 index 00000000..f69c96e8 --- /dev/null +++ b/kalzium/src/data/toolpics/dsc.jpg diff --git a/kalzium/src/data/toolpics/erlenmeyerkolben.jpg b/kalzium/src/data/toolpics/erlenmeyerkolben.jpg Binary files differnew file mode 100644 index 00000000..eaf6fe44 --- /dev/null +++ b/kalzium/src/data/toolpics/erlenmeyerkolben.jpg diff --git a/kalzium/src/data/toolpics/exikator.jpg b/kalzium/src/data/toolpics/exikator.jpg Binary files differnew file mode 100644 index 00000000..f4bc8080 --- /dev/null +++ b/kalzium/src/data/toolpics/exikator.jpg diff --git a/kalzium/src/data/toolpics/halter.jpg b/kalzium/src/data/toolpics/halter.jpg Binary files differnew file mode 100644 index 00000000..564057c4 --- /dev/null +++ b/kalzium/src/data/toolpics/halter.jpg diff --git a/kalzium/src/data/toolpics/heizplatte.jpg b/kalzium/src/data/toolpics/heizplatte.jpg Binary files differnew file mode 100644 index 00000000..304de198 --- /dev/null +++ b/kalzium/src/data/toolpics/heizplatte.jpg diff --git a/kalzium/src/data/toolpics/hplc.jpg b/kalzium/src/data/toolpics/hplc.jpg Binary files differnew file mode 100644 index 00000000..aad79ca5 --- /dev/null +++ b/kalzium/src/data/toolpics/hplc.jpg diff --git a/kalzium/src/data/toolpics/kolbenprober.png b/kalzium/src/data/toolpics/kolbenprober.png Binary files differnew file mode 100644 index 00000000..1d17b95a --- /dev/null +++ b/kalzium/src/data/toolpics/kolbenprober.png diff --git a/kalzium/src/data/toolpics/korkring.jpg b/kalzium/src/data/toolpics/korkring.jpg Binary files differnew file mode 100644 index 00000000..0c668605 --- /dev/null +++ b/kalzium/src/data/toolpics/korkring.jpg diff --git a/kalzium/src/data/toolpics/messzylinder.jpg b/kalzium/src/data/toolpics/messzylinder.jpg Binary files differnew file mode 100644 index 00000000..4a6b79a7 --- /dev/null +++ b/kalzium/src/data/toolpics/messzylinder.jpg diff --git a/kalzium/src/data/toolpics/moerser.jpg b/kalzium/src/data/toolpics/moerser.jpg Binary files differnew file mode 100644 index 00000000..2020dc6d --- /dev/null +++ b/kalzium/src/data/toolpics/moerser.jpg diff --git a/kalzium/src/data/toolpics/phpapier.jpg b/kalzium/src/data/toolpics/phpapier.jpg Binary files differnew file mode 100644 index 00000000..3a5d0328 --- /dev/null +++ b/kalzium/src/data/toolpics/phpapier.jpg diff --git a/kalzium/src/data/toolpics/pileusball.jpg b/kalzium/src/data/toolpics/pileusball.jpg Binary files differnew file mode 100644 index 00000000..cea0871e --- /dev/null +++ b/kalzium/src/data/toolpics/pileusball.jpg diff --git a/kalzium/src/data/toolpics/pipette.jpg b/kalzium/src/data/toolpics/pipette.jpg Binary files differnew file mode 100644 index 00000000..e250da88 --- /dev/null +++ b/kalzium/src/data/toolpics/pipette.jpg diff --git a/kalzium/src/data/toolpics/rg-halter.jpg b/kalzium/src/data/toolpics/rg-halter.jpg Binary files differnew file mode 100644 index 00000000..99574f83 --- /dev/null +++ b/kalzium/src/data/toolpics/rg-halter.jpg diff --git a/kalzium/src/data/toolpics/rg-staender.jpg b/kalzium/src/data/toolpics/rg-staender.jpg Binary files differnew file mode 100644 index 00000000..d07476d0 --- /dev/null +++ b/kalzium/src/data/toolpics/rg-staender.jpg diff --git a/kalzium/src/data/toolpics/rg.jpg b/kalzium/src/data/toolpics/rg.jpg Binary files differnew file mode 100644 index 00000000..6e21d0b2 --- /dev/null +++ b/kalzium/src/data/toolpics/rg.jpg diff --git a/kalzium/src/data/toolpics/rotationsverdampfer.jpg b/kalzium/src/data/toolpics/rotationsverdampfer.jpg Binary files differnew file mode 100644 index 00000000..4e19bc62 --- /dev/null +++ b/kalzium/src/data/toolpics/rotationsverdampfer.jpg diff --git a/kalzium/src/data/toolpics/rueckflusskuehler.jpg b/kalzium/src/data/toolpics/rueckflusskuehler.jpg Binary files differnew file mode 100644 index 00000000..74852992 --- /dev/null +++ b/kalzium/src/data/toolpics/rueckflusskuehler.jpg diff --git a/kalzium/src/data/toolpics/ruehrfisch.jpg b/kalzium/src/data/toolpics/ruehrfisch.jpg Binary files differnew file mode 100644 index 00000000..3952fa42 --- /dev/null +++ b/kalzium/src/data/toolpics/ruehrfisch.jpg diff --git a/kalzium/src/data/toolpics/rundkolben.jpg b/kalzium/src/data/toolpics/rundkolben.jpg Binary files differnew file mode 100644 index 00000000..fce2ddf6 --- /dev/null +++ b/kalzium/src/data/toolpics/rundkolben.jpg diff --git a/kalzium/src/data/toolpics/scheidetrichter.jpg b/kalzium/src/data/toolpics/scheidetrichter.jpg Binary files differnew file mode 100644 index 00000000..c4f79a36 --- /dev/null +++ b/kalzium/src/data/toolpics/scheidetrichter.jpg diff --git a/kalzium/src/data/toolpics/schutzbrille.jpg b/kalzium/src/data/toolpics/schutzbrille.jpg Binary files differnew file mode 100644 index 00000000..6a9bd0dc --- /dev/null +++ b/kalzium/src/data/toolpics/schutzbrille.jpg diff --git a/kalzium/src/data/toolpics/spatel.jpg b/kalzium/src/data/toolpics/spatel.jpg Binary files differnew file mode 100644 index 00000000..ec9a6e50 --- /dev/null +++ b/kalzium/src/data/toolpics/spatel.jpg diff --git a/kalzium/src/data/toolpics/spritzflasche.jpg b/kalzium/src/data/toolpics/spritzflasche.jpg Binary files differnew file mode 100644 index 00000000..abeec492 --- /dev/null +++ b/kalzium/src/data/toolpics/spritzflasche.jpg diff --git a/kalzium/src/data/toolpics/thermometer.jpg b/kalzium/src/data/toolpics/thermometer.jpg Binary files differnew file mode 100644 index 00000000..b4c79210 --- /dev/null +++ b/kalzium/src/data/toolpics/thermometer.jpg diff --git a/kalzium/src/data/toolpics/thermometer2.jpg b/kalzium/src/data/toolpics/thermometer2.jpg Binary files differnew file mode 100644 index 00000000..375d94ea --- /dev/null +++ b/kalzium/src/data/toolpics/thermometer2.jpg diff --git a/kalzium/src/data/toolpics/tonschale.jpg b/kalzium/src/data/toolpics/tonschale.jpg Binary files differnew file mode 100644 index 00000000..8cabf844 --- /dev/null +++ b/kalzium/src/data/toolpics/tonschale.jpg diff --git a/kalzium/src/data/toolpics/trichter.jpg b/kalzium/src/data/toolpics/trichter.jpg Binary files differnew file mode 100644 index 00000000..3980f3d1 --- /dev/null +++ b/kalzium/src/data/toolpics/trichter.jpg diff --git a/kalzium/src/data/toolpics/trockenrohr.jpg b/kalzium/src/data/toolpics/trockenrohr.jpg Binary files differnew file mode 100644 index 00000000..1cc5d809 --- /dev/null +++ b/kalzium/src/data/toolpics/trockenrohr.jpg diff --git a/kalzium/src/data/toolpics/tropftrichter.jpg b/kalzium/src/data/toolpics/tropftrichter.jpg Binary files differnew file mode 100644 index 00000000..5f565559 --- /dev/null +++ b/kalzium/src/data/toolpics/tropftrichter.jpg diff --git a/kalzium/src/data/toolpics/uhrglas.jpg b/kalzium/src/data/toolpics/uhrglas.jpg Binary files differnew file mode 100644 index 00000000..50821e97 --- /dev/null +++ b/kalzium/src/data/toolpics/uhrglas.jpg diff --git a/kalzium/src/data/toolpics/verteiler.jpg b/kalzium/src/data/toolpics/verteiler.jpg Binary files differnew file mode 100644 index 00000000..25f48114 --- /dev/null +++ b/kalzium/src/data/toolpics/verteiler.jpg diff --git a/kalzium/src/data/toolpics/vollpipette.jpg b/kalzium/src/data/toolpics/vollpipette.jpg Binary files differnew file mode 100644 index 00000000..0cfefec6 --- /dev/null +++ b/kalzium/src/data/toolpics/vollpipette.jpg diff --git a/kalzium/src/data/toolpics/waage.jpg b/kalzium/src/data/toolpics/waage.jpg Binary files differnew file mode 100644 index 00000000..ef9b448d --- /dev/null +++ b/kalzium/src/data/toolpics/waage.jpg diff --git a/kalzium/src/data/toolpics/wasserstrahlpumpe.jpg b/kalzium/src/data/toolpics/wasserstrahlpumpe.jpg Binary files differnew file mode 100644 index 00000000..4e1caeaf --- /dev/null +++ b/kalzium/src/data/toolpics/wasserstrahlpumpe.jpg diff --git a/kalzium/src/data/tools.xml b/kalzium/src/data/tools.xml new file mode 100644 index 00000000..ccccb90e --- /dev/null +++ b/kalzium/src/data/tools.xml @@ -0,0 +1,227 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tools> + <item> + <picture>uhrglas.jpg</picture> + <name>Watchglass</name> + <desc>Watchglasses are round glass panes with a diameter of around 5 - 10 cm which are used in the various experimental techniques. The border is bent upwards to allow the watchglass to hold small amounts of liquids in order to let them evaporate. The evaporation can be accelerated by heating the watchglass with a Bunsen burner. Watchglasses can also be used to cover petri dishes or beakers. Moreover watchglasses are suited to weighing small amounts of matter or alternatively drying them in the airing cupboard. The term watchglass is derived from the former pocket watches' protection glass which was often domed.</desc> + </item> + <item> + <picture>exikator.jpg</picture> + <name>Dehydrator</name> + <desc>A dehydrator is a laboratory apparatus which is often made of glass and serves to dry chemical matters, that is, to remove water or liquid from a sample. + In principle it is a glass bowl with cap which has a planar grinding so that the bowl is air tight closeable. The dehydrator's lower part is ordinarily filled with a drying agent e.g. calcium chloride, silica gel, phosphoric anhydride or sulphuric acid. The sample to be dried is placed on a diaphanous cartridge of plastic or ceramics above the drying agent. + The drying agent is hygroscopic, which means that it dehumidifies its environment by absorbing water vapor. The dry atmosphere then takes up water from the sample to be dried.</desc> + </item> + <item> + <picture>spatel.jpg</picture> + <name>Spatula</name> + <desc> The spatula is a laboratory tool to scrape off, grind and transport chemicals. The material they are made of (e.g. iron, titanium, platinum) and their design (e.g. flat spatula or spoon spatula) can be different.</desc> + </item> + <item> + <picture>wasserstrahlpumpe.jpg</picture> + <name>Water Jet Pump</name> + <desc>The water jet pump has two entry pipes and one exit and consists in principle of two pipes one inside the other. At the water entry a water jet shoots under full pressure out of a nozzle into a slightly larger pipe. Thereby the water jet carries away air or fluid from the second entry. <br> this is caused by the negative pressure in a drifting fluid. Thus it is an application of the hydrodynamic paradox. This says that objects close to drifting fluids are aspirated instead of being pushed away.</desc> + </item> + <item> + <picture>brechungsmesser.jpg</picture> + <name>Refractometer</name> + <desc>With a refractometer the refractive index of optical media is determined. If the refractive index of a chemical is known it can be used after a synthesis to determine the sample's purity or to audit the synthesis' success.</desc> + </item> + <item> + <picture>moerser.jpg</picture> + <name>Mortar</name> + <desc>A mortar is used for manually grinding solids. It can also be used to homogenize a mixture of powders by grinding. A club-shaped tool known as a pestle is used with the mortar for grinding.</desc> + </item> + <item> + <picture>heizplatte.jpg</picture> + <name>Heating Coil</name> + <desc>Heating coils are used to heat flasks and other containers. Multiple heating coils can be connected with a thermometer so that the heat will not exceed a specified temperature. It is possible to use a magnetic field inside the heating coil to stir fluids with a magnetic stirrer. This will homogenize the fluid in terms of temperature and composition.</desc> + </item> + <item> + <picture>korkring.jpg</picture> + <name>Cork Ring</name> + <desc>Large containers like round-bottomed flasks are placed on rings made of cork, a special soft lightweight wood with good insulating qualities to protect fragile instruments.</desc> + </item> + <item> + <picture>tropftrichter.jpg</picture> + <name>Dropping Funnel</name> + <desc>A dropping funnel can be used to drop precise amounts of fluid. You can control the dropping speed with a valve.</desc> + </item> + <item> + <picture>scheidetrichter.jpg</picture> + <name>Separating Funnel</name> + <desc>A separating funnel can be used to separate a mixture of fluids by differing density. A valve at the bottom allows you to drain the more dense fluid for transfer to another container.</desc> + </item> + <item> + <picture>rg-staender.jpg</picture> + <name>Test Tube Rack</name> + <desc>This rack comes in handy when you want to test many small amounts of chemicals in a row, or if you want to dry test tubes.</desc> + </item> + <item> + <picture></picture> + <name>Vortexer</name> + <desc>A vortexer serves to homogenize reagents found in laboratories. The container containing liquid to be homogenized is put on a platform. The platform shakes by rotary agitation up to 3000RPM at which point a contact sensor is activated. In this way extremely small volumes of fluid can be homogenized quickly as well. It is the opposite of a centrifuge, used to separate fluids.</desc> + </item> + <item> + <picture>spritzflasche.jpg</picture> + <name>Wash Bottle</name> + <desc>These bottles are used for many purposes. In most laboratories they are usually filled with water, salt, acid or other commonly used fluids. They make it easy to apply the fluid if you do not need to measure a precise amount.</desc> + </item> + <item> + <picture>rotationsverdampfer.jpg</picture> + <name>Rotary Evaporator</name> + <desc>A rotary evaporator consists of a round flask in a bath of hot water that is designed to evaporate solvents. The flask is rotated and the solvent collects under a vacuum onto a condenser and drips into a condensate collecting flask. in this way solutions can be concentrated or purified. By attaching a vacuum pump, the air pressure and therefore the boiling point of the fluid can be decreased.</desc> + </item> + <item> + <picture>rueckflusskuehler.jpg</picture> + <name>Reflux Condenser</name> + <desc>A reflux condenser subjects fluid to a process where a gas produced by heating is collected on the reflux condenser. The fluid is cooled until it condenses and runs back into the original fluid. Usually it is put on a round-bottomed flask or several neck flasks.</desc> + </item> + <item> + <picture>pileusball.jpg</picture> + <name>Pipette Bulb</name> + <desc>A pipette bulb is used to fill pipettes. It produces a negative pressure which makes the fluid go into the pipette. If one lets air back into the ball the fluid will run out of the pipette.</desc> + </item> + <item> + <picture>rg.jpg</picture> + <name>Test Tube</name> + <desc>In a test tube small reactions or experiements are performed. There are many different types of tubes. For example some have connectors, some are etched for measurements, some are hardened for durability.</desc> + </item> + <item> + <picture>schutzbrille.jpg</picture> + <name>Protective Goggles</name> + <desc>Most laboratories insist that everyone wears protective goggles. Without them, it is too risky to work with most chemicals. Usually, the lens is a special type of plastic which protects you from both mechanical impacts and acid and base chemicals.</desc> + </item> + <item> + <picture>rundkolben.jpg</picture> + <name>Round-bottomed Flask</name> + <desc>A round-bottomed flask is used for a lot of reactions. Some can be connected to other items, as the frosting on the neck shows. With cork rings they can be placed on a table.</desc> + </item> + <item> + <picture>vollpipette.jpg</picture> + <name>Full Pipette</name> + <desc>Unlike a regular pipette, a full pipette only has one marking for a specific volume.</desc> + </item> + <item> + <picture>trockenrohr.jpg</picture> + <name>Drying Tube</name> + <desc>There are reactions which need to be kept free of water. To make this possible one uses a drying tube, which contains a hygroscopic chemical to absorb water in the atmosphere.</desc> + </item> + <item> + <picture>rg-halter.jpg</picture> + <name>Test tube fastener</name> + <desc>With a test tube fastener you can easily hold test tubes. If you use a fastener there is a safe distance between the hand and the test tube when the tube is hot. In particular, it is used when you hold a test tube over an open flame.</desc> + </item> + <item> + <picture>messzylinder.jpg</picture> + <name>Measuring Cylinder</name> + <desc>In a measuring cylinder you can fill amounts of liquids relatively precisely. Furthermore, the cylinder allows particulate matter to sink. Following this, you can separate particulates from the fluid by decanting.</desc> + </item> + <item> + <picture>thermometer.jpg</picture> + <name>Thermometer</name> + <desc>With a thermometer you can determine the temperature of a sample. In a laboratory special thermometers are used, which can also be used within acids or bases.</desc> + </item> + <item> + <picture>ruehrfisch.jpg</picture> + <name>Magnetic stir bar</name> + <desc>Magnetic stir bars are highly chemically inert, small magnetic bars. Most heaters have a built-in magnet which can rotate. This causes the stir bar to rotate and the mixture to be homogenized.</desc> + </item> + <item> + <picture></picture> + <name>Magnetic Stir Bar Retriever</name> + <desc>With a magnetic stir bar retriever you can remove magnetic stir bars from a container. The retriever is a bar with a magnet at the end which attracts the stir bars.</desc> + </item> + <item> + <picture>pipette.jpg</picture> + <name>Pipette</name> + <desc>Pipettes are used to introduce small quantities of liquids in laboratories. A pipette has a volume scale and as a rule pileusballs are used as droppers for liquids. Both sorts of pipettes are calibrated for fluids with a temperature of 20°C and for time of outflow (signified by "Ex."). If needed times of outflow are indicated on the pipettes.</desc> + </item> + <item> + <picture>erlenmeyerkolben.jpg</picture> + <name>Erlenmeyer Flask</name> + <desc>This flask named after the chemist Emil Erlenmeyer (1825-1909) comes - unlike the beaker - with an inverted conical base and a cylindrical neck. There are different types of Erlenmeyer flasks for laboratory applications, the narrow and wide neck form. Depending on the application the flask may have precision grinding to allow good connection to other containers. + <br> + The narrow neck reduces the risk of fluid escaping, especially when boiling or during reactions which agitate the contents. + <br> + An Erlenmeyer flask is useful for mixing fluids or accelerating reactions by stirring or shaking, for example. The Erlenmeyer flask is particularly suited for a magnetic stirrer, since it can be placed directly on the stirring platform. A round-bottomed flask, by contrast, must be placed on a cork ring on the stirring platform. +</desc> + + </item> + <item> + <picture></picture> + <name>Ultrasonic Bath</name> + <desc>For some chemical reactions it is important that the solvent is gas free. To achieve this the reaction vessel is put for some time into a ultrasonic bath. Through the high sound frequency the vapor locks peel away and ascend. This procedure is called outgassing.</desc> + </item> + <item> + <picture>waage.jpg</picture> + <name>Scales</name> + <desc>In a laboratory you often have to weigh out very precise amounts of reagents. High precise scales can measure masses down to 1/10000 gram.Therefor they stand on granite blocks to avoid vibrancies and are protected against blasts by a dome.</desc> + </item> + <item> + <picture>destillierbruecke.jpg</picture> + <name>Distillation bridge</name> + <desc>To separate a mixture you can use distillation amongst others. The distillation bridge is thereby the way between the two pots. In the one pot there is the mixture to be separated. Through heating, a gas forms which is lead through the bridge. At the end of the bridge the gas phase is condensed again and drips in a round flask. As a rule, the bridge is cooled by return flow. In addition, there is often a thermometer for controlling the temperature on the distillation bridge.</desc> + </item> + <!-- proofreaders: start here! --> + <item> + <picture>kolbenprober.png</picture> + <name>Syringe</name> + <desc>A syringe consists of two parts: A glass tube and a punch. Both are normally made of glass. A gas floats into the glass tube. As the syringe is a closed system the punch has to give way. This can be used measuring the volume of an reaction.</desc> + </item> + <item> + <picture>verteiler.jpg</picture> + <name>Separation Beaker</name> + <desc>At the four ends of this separation beaker you put four small caps. While distilling, you can turn the beaker by 60 degree after a certain temperate has been reached. This way, at the end of the distillation all four caps have a specific liquid in it, depending on the boiling points of the liquid distilled.</desc> + </item> + <item> + <picture>brenner.jpg</picture> + <name>Burner</name> + <desc>There are several types of burners. The picture shows a Teclu-Burner. Each type has specific uses. They vary in the peak temperature and overall heating capability.</desc> + </item> + <item> + <picture>abzug.jpg</picture> + <name>Extractor Hood</name> + <desc>Most laboratories use extractor hoods. They filter the gasses from chemical reactions and pump the cleaned air outside of the building.</desc> + </item> + <item> + <picture>thermometer2.jpg</picture> + <name>Contact Thermometer</name> + <desc>A contact thermometer is different from a regular thermometer because of its sensor for the current temperature. Such a thermometer is connected with a heating coild. If the sensor notices that the aimed temperature has been reached the contact thermometer will make the heating coild stop heating. Therefore in an experiment it is possible to have a constant temperature.</desc> + </item> + <item> + <picture>halter.jpg</picture> + <name>Clamps</name> + <desc>With clamps as used in a laboratory you can easily hold all kinds of tools.</desc> + </item> + <item> + <picture>phpapier.jpg</picture> + <name>Litmus Paper</name> + <desc>There are multiple way to measure the pH-Value of an solution. With a litmus paper it is easy to get a pretty precise pH-Value. The color indicates the value. If you need a more precise value you can for example use a pH-Meter which is using the conductivity of a solution.</desc> + </item> + <item> + <picture>trichter.jpg</picture> + <name>Short-stem Funnel</name> + <desc>A funnel is used in the laboratory to fill powder into something.</desc> + </item> + <item> + <picture></picture> + <name>Buret</name> + <desc>A buret is used to titrate liquids. The buret is filled with a specified volume of a liquid. Below it a container like an Erlenmeyer flask is placed. By opening the valve the liquid in the container will be titrated. High-quality buret have a venting-mechanism with which they can be very easily refilled with the exact volume for which the buret is calibrated.</desc> + </item> + <item> + <picture>becherglas.jpg</picture> + <name>Beaker</name> + <desc>Beakers are used in many places for a lot of tasks. They are used to store chemicals are to perform chemical reactions. They are also often used for titrations.</desc> + </item> + <item> + <picture>dsc.jpg</picture> + <name>DSC (Differencial Scanning Calorimetry)</name> + <desc>The DSC measures the heat flow volume of a compound. This value is very specific for every kind of matter. Thus, the DSC is used to identify chemicals or to describe them.</desc> + </item> + <item> + <picture></picture> + <name>Dewar vessel</name> + <desc>A dewar vessel (or dewar flask) is designed for a good thermal insulation. Its hull is a double-layer construction with vacuum between the two layers. Because of this they are appropriote for keeping liquids cold or warm. A thermos flawsk is an example of a dewar vessel.</desc> + </item> +</tools> diff --git a/kalzium/src/data/tools.xml.todo b/kalzium/src/data/tools.xml.todo new file mode 100644 index 00000000..eb746de7 --- /dev/null +++ b/kalzium/src/data/tools.xml.todo @@ -0,0 +1,50 @@ +See: http://www.labdepotinc.com/default.aspx +<tools> + <tool picture=""> + <name>Rhrfischangel</name> + <desc>Mit der Rhrfischangel kann man Rhrfische wieder aus Gefen entfernen. Die Angel ist ein Stab mit einem Magneten am Ende an dem der Rhrfisch haften bleibt.</desc> + </tool> + <tool picture="exikator.jpg"> + <name>Exsikkator</name> + <desc> + Ein Exsikkator (von lat. exsiccare = austrocknen) ist ein Laborgert aus der Chemie, das meist aus Glas gefertigt wird und zum Trocknen von chemischen Stoffen verwendet wird, das heit zum Entzug von Wasser bzw. Feuchtigkeit. + Bei einem Exsikkator handelt es sich im Prinzip um eine Glasschssel mit Deckel (siehe Bild unten), wobei der Deckel das Gef ber einen Planschliff verschliet, was gewhrleistet, da es luftdicht verschliebar ist. Den unteren Teil des Exsikkators befllt man gewhnlich mit einem Trocknungsmittel, z.B. Calciumchlorid, Silicagel, Phosphorpentoxid oder Schwefelsure. Auf einem durchlssigen Einsatz aus Kunststoff oder Keramik oberhalb des Trockenmittels wird die zu trocknende Substanz abgelegt. + Das Trocknungsmittel hat die Eigenschaft hygroskopisch zu sein, das heit, es entzieht aus seiner Umgebung Feuchtigkeit und nimmt diese auf. Die durch das Trocknungsmittel getrocknete Atmosphre im Exsikkator entzieht selbst wiederum Wasser bzw. Lsungsmittel aus dem zu trocknenden Stoff. + </desc> + </tool> + <tool picture="spatel.jpg"> + <name>Spatel</name> + <desc> Der Spatel ist ein Laborgert zum Abkratzen, Zerkleinern und Transportieren von Chemikalien. Spatel bestehen aus verschiedenen Materialien (Eisen, Titan, Platin) und knnen verschiedene Formen haben (z.B. Flachspatel oder Lffelspatel).</desc> + </tool> + <tool picture="wasserstrahlpumpe.jpg"> + <name>Wasserstrahlpumpe</name> + <desc> + Die Wasserstrahlpumpe besitzt zwei Eingnge und einen Ausgang und besteht im Prinzip aus zwei ineinander gesteckten Rohren. Am Wassereingang spritzt ein Wasserstrahl unter dem vollen Leitungsdruck aus einer Dse in ein etwas weiteres Rohr. Dabei reit der Wasserstrahl Luft oder Flssigkeiten vom zweiten Eingang mit. <br> Dies geschieht aufgrund des Unterdrucks in einer strmenden Flssigkeit. Es ist somit eine Anwendung des Hydrodynamischen Paradoxon. Dies besagt, dass Gegenstnde, die in der Nhe von strmenden Flssigkeiten sind, angesaugt statt abgestoen werden. + </desc> + </tool> + <tool picture="brechungsmesser.jpg"> + <name>Refraktometer</name> + <desc>Mit einem Refraktometer wird der Brechungsindex von optischen Medien bestimmt. Wenn von einer Chemikalie der Brechungsindex bekannt ist kann somit nach einer Synthese die Reinheit des Produktes oder der Erfolg einer Synthese berprft werden.</desc> + </tool> + <tool picture="pipette.jpg"> + <name>Pipette</name> + <desc>Pipetten dienen im Labor zum Dosieren von Flssigkeiten. Auf der Pipette findet sich eine Volumenskala. Als Pipettierhilfe dient in der Regel ein Pileusball. Beide Pipettenarten sind auf Flssigkeiten mit der Temperatur von 20C und auf Ausfluss (Ex.) geeicht, Auslaufzeiten werden, wenn ntig, auf den Pipetten angegeben.</desc> + </tool> + <tool picture="erlenmeyerkolben.jpg"> + <name>Erlenmeyerkolben</name> + <desc> + Dieser nach dem Chemiker Emil Erlenmeyer (1825-1909) benannte Kolben verfgt - im Gegensatz zum Becherglas - ber einen nach oben hin enger werdenden Hals. Im Laborgebrauch existieren verschiedene Varianten des Erlenmeyerkolbens, die Enghals- und die Weithals-Form und je nach Anwendung auch Kolben mit Normschliff. + <br> + Durch den verjngenden Hals ist die Gefahr, dass bei Zugabe von Substanzen, beim Schwenken, Rhren oder Sieden Flssigkeiten aus dem Kolben unkontrolliert entweichen deutlich kleiner, als bei Becherglsern. + <br> + So knnen im Erlenmeyerkolben bequem z.B. Flssigkeiten vermischt oder Lsungsvorgnge durch - auch relativ heftiges - Schwenken oder Rhren beschleunigt werden. Er eignet sich - wie der Rundkolben - auch gut fr den Magnetrhrer, kann aber wegen seines flachen Bodens direkt abgestellt werden. (Der Rundkolben hingegen bentigt einen Korkring oder ein Stativ fr den festen Stand, letzteres macht ein Schwenken mit der Hand oder ein hufiges Prfen durch Halten ins Gegenlicht unmglich.) + </desc> + </tool> + <tool picture=""> + <name>Ultraschallbad</name> + <desc>Bei einigen chemischen Reaktionen kommt es darauf an, dass die Lsungsmittel gasfrei sind. Um dies zu erreichen wird das Reaktionsgef fr einige Zeit in ein Ultraschallbad gegeben. Durch die hohe Schallfrequenz lsen sich Gasblasen und steigen auf. Diesen Vorgang nennt man Entgasen.</desc> + </tool> + <tool picture="waage.jpg"> + <name>Waage</name> + <desc>Im Labor muss man hufig sehr genaue Mengen von Reagenzien abwiegen. Feinwaagen messen bis auf eine 1/10000 Gramm genaue Mengen ab. Dazu stehen sie auf Granitblcken um Erschtterungen zu vermeiden und sind durch Hauben von Windsten geschtzt.</desc> + </tool> diff --git a/kalzium/src/detailedgraphicaloverview.cpp b/kalzium/src/detailedgraphicaloverview.cpp new file mode 100644 index 00000000..56c086ff --- /dev/null +++ b/kalzium/src/detailedgraphicaloverview.cpp @@ -0,0 +1,232 @@ +/*************************************************************************** + +copyright : (C) 2004, 2005 by Carsten Niehaus +email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "detailedgraphicaloverview.h" +#include "element.h" +#include "kalziumutils.h" + +//KDE-Includes +#include <kdebug.h> +#include <klocale.h> +#include <kglobalsettings.h> +#include <kglobal.h> + +//QT-Includes +#include <qpainter.h> +#include <qstring.h> +#include <qpixmap.h> +#include <qrect.h> + +DetailedGraphicalOverview::DetailedGraphicalOverview( Element *el, QWidget *parent, const char *name ) +: QWidget( parent, name ) +{ + init( el ); +} + +DetailedGraphicalOverview::DetailedGraphicalOverview( QWidget *parent, const char *name ) +: QWidget( parent, name ) +{ + init( 0L ); +} + +void DetailedGraphicalOverview::init( Element *el ) +{ + setBackgroundMode( NoBackground ); + + m_element = el; + setMinimumSize( 300, 200 ); + update(); +} + +void DetailedGraphicalOverview::paintEvent( QPaintEvent* ) +{ + int h = height(); + int w = width(); + + QPixmap pm( w, h ); + + QPainter p; + p.begin( &pm ); + + p.setBrush(Qt::SolidPattern); + + if ( !m_element ) + { + pm.fill( paletteBackgroundColor() ); + p.drawText( 0, 0, w, h, Qt::AlignCenter | Qt::WordBreak, i18n( "No element selected" ) ); + } + else + { + + h_t = 20; //height of the texts + + x1 = 0; + y1 = 0; + + x2 = w; + y2 = h; + + p.setBrush( m_element->elementColor() ); + p.drawRect( x1 , y1 , x2 , y2 ); + + p.setBrush( Qt::black ); + p.setBrush(Qt::NoBrush); + + QFont fA = KGlobalSettings::generalFont(); + QFont fB = KGlobalSettings::generalFont(); + QFont fC = KGlobalSettings::generalFont(); + + QString strLocalizedMass = KalziumUtils::localizedValue( m_element->mass(), 6 ); + + fA.setPointSize( fA.pointSize() + 20 ); //Huge font + fA.setBold( true ); + fB.setPointSize( fB.pointSize() + 6 ); //Big font + fC.setPointSize( fC.pointSize() + 4 ); //Big font + fC.setBold( true ); + QFontMetrics fmA = QFontMetrics( fA ); + QFontMetrics fmB = QFontMetrics( fB ); + + //coordinates for element symbol: near the center + int xA = 4 * w / 10; + int yA = h / 2; + + //coordinates for the atomic number: offset from element symbol to the upper left + int xB = xA - fmB.width( QString::number( m_element->number() ) ); + int yB = yA - fmA.height() + fmB.height(); + + //Element Symbol + p.setFont( fA ); + p.drawText( xA, yA , m_element->symbol() ); + + //Atomic number + p.setFont( fB ); + p.drawText( xB, yB, QString::number( m_element->number() )); + + QRect rect( 0, 20, w/2, h ); + + p.setFont( fC ); + + int size = KalziumUtils::maxSize(m_element->elname(), rect , fC, &p); + int size2 = KalziumUtils::maxSize(m_element->oxstage(), rect, fC, &p); + int size3 = KalziumUtils::maxSize( strLocalizedMass , rect , fC, &p); + + //Name and other data + fC.setPointSize( size ); + p.setFont( fC ); + + //Name + p.drawText( 1, 0, w/2, h, Qt::AlignLeft, m_element->elname() ); + + //Oxidationstates + fC.setPointSize( size2 ); + p.setFont( fC ); + int offsetOx = KalziumUtils::StringHeight( strLocalizedMass , fC, &p ); + p.drawText( 1, h-offsetOx, w/2, offsetOx, Qt::AlignLeft, m_element->oxstage() ); + + //Mass + fC.setPointSize( size3 ); + p.setFont( fC ); + + int offset = KalziumUtils::StringHeight( strLocalizedMass, fC, &p ); + p.drawText( w/2, h-offset, w/2, offset, Qt::AlignRight, strLocalizedMass ); + + drawBiologicalSymbol( &p ); + } + + p.end(); + + + bitBlt( this, 0, 0, &pm ); +} + +void DetailedGraphicalOverview::drawBiologicalSymbol( QPainter *p ) +{ + if ( !m_element ) return; + const int db = h_t; //diameter of the big circle + const int ds = db/2; //diameter of the inner circle + + int d_ds = ( db/2 )-( ds/2 ); //the delta-x/y of the inner circle + + int pos_x = width() - 4 - db; + int pos_y = 4; + + if ( m_element->biological() > 0 ) + { + const int radius = db + 8; + p->setBrush( Qt::SolidPattern ); + p->setBrush( Qt::white ); + p->setPen( Qt::black ); + p->drawRoundRect( QRect( width() - radius, + -radius, + 2 * radius, + 2 * radius ), 70, 70 ); + } + + switch ( m_element->biological() ) + { + case 0: //nothing + break; + case 1: //red, red + p->setBrush( Qt::red ); + p->setBrush(Qt::NoBrush); + p->setPen( Qt::red ); + p->drawEllipse( pos_x,pos_y,db,db ); + p->setBrush(Qt::SolidPattern); + p->setBrush( Qt::red ); + p->drawEllipse( pos_x+d_ds, pos_y+d_ds, ds, ds ); + break; + case 2: //green, red + p->setBrush( Qt::red ); + p->setBrush(Qt::NoBrush); + p->setPen( Qt::red ); + p->drawEllipse( pos_x,pos_y,db,db ); + p->setBrush(Qt::SolidPattern); + p->setBrush( Qt::green ); + p->setPen( Qt::green ); + p->drawEllipse( pos_x+d_ds, pos_y+d_ds, ds, ds ); + break; + case 3: //green + p->setBrush(Qt::SolidPattern); + p->setBrush( Qt::green ); + p->setPen( Qt::green ); + p->drawEllipse( pos_x+d_ds, pos_y+d_ds, ds, ds ); + break; + case 4: //green, blue + p->setBrush( Qt::blue ); + p->setBrush(Qt::NoBrush); + p->setPen( Qt::blue ); + p->drawEllipse( pos_x,pos_y,db,db ); + p->setBrush(Qt::SolidPattern); + p->setBrush( Qt::green ); + p->setPen( Qt::green ); + p->drawEllipse( pos_x+d_ds, pos_y+d_ds, ds, ds ); + break; + case 5: //blue + p->setBrush(Qt::SolidPattern); + p->setBrush( Qt::blue ); + p->setPen( Qt::blue ); + p->drawEllipse( pos_x+d_ds, pos_y+d_ds, ds, ds ); + break; + case 6: //blue, blue + p->setBrush( Qt::blue ); + p->setBrush(Qt::NoBrush); + p->setPen( Qt::blue ); + p->drawEllipse( pos_x,pos_y,db,db ); + p->setBrush(Qt::SolidPattern); + p->drawEllipse( pos_x+d_ds, pos_y+d_ds, ds, ds ); + break; + } +} + +#include "detailedgraphicaloverview.moc" diff --git a/kalzium/src/detailedgraphicaloverview.h b/kalzium/src/detailedgraphicaloverview.h new file mode 100644 index 00000000..2f095be7 --- /dev/null +++ b/kalzium/src/detailedgraphicaloverview.h @@ -0,0 +1,69 @@ +#ifndef DETAILEDGRAPHICALOVERVIEW_H +#define DETAILEDGRAPHICALOVERVIEW_H +/*************************************************************************** + copyright : (C) 2004 by Carsten Niehaus + email : cniehaus@kde.org + + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include <qwidget.h> + +class Element; + + +/** + * @short The widget which displays the most important information + * in one widget like a lot people know it from school + * @author Carsten Niehaus + */ +class DetailedGraphicalOverview : public QWidget +{ + Q_OBJECT + + public: + DetailedGraphicalOverview( Element *el, QWidget *parent, const char *name=0 ); + DetailedGraphicalOverview( QWidget *parent, const char *name=0 ); + + /** + * sets the elements whose data will be used to @p el + */ + void setElement( Element* el ){ + m_element = el; + update(); + } + + /** + * draw the small symbol which symbolises the + * relevence for humans + */ + void drawBiologicalSymbol( QPainter *p ); + + //calculation of the corners + int x1,x2,y1,y2,h_t; + + private: + /** + * the element whose data will be used + */ + Element *m_element; + + protected: + virtual void paintEvent( QPaintEvent* ); + + /** + * initialization method + */ + virtual void init( Element* ); +}; + +#endif // DETAILEDGRAPHICALOVERVIEW_H + diff --git a/kalzium/src/detailinfodlg.cpp b/kalzium/src/detailinfodlg.cpp new file mode 100644 index 00000000..c099ccd8 --- /dev/null +++ b/kalzium/src/detailinfodlg.cpp @@ -0,0 +1,497 @@ +/*************************************************************************** + begin : Tue Apr 8 2003 + copyright : (C) 2003, 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "detailinfodlg.h" +#include "isotope.h" +#include "kalziumutils.h" +#include "kalziumdataobject.h" + +#include <kdebug.h> +#include <klocale.h> +#include <kiconloader.h> +#include <khtml_part.h> +#include <khtmlview.h> +#include <kstandarddirs.h> +#include <kactioncollection.h> +#include <kcombobox.h> +#include <kapplication.h> + +#include <qfile.h> +#include <qlabel.h> +#include <qimage.h> +#include <qwhatsthis.h> +#include <qlayout.h> +#include <qpushbutton.h> +#include <qwidgetstack.h> + +#include "element.h" +#include "orbitswidget.h" +#include "detailedgraphicaloverview.h" +#include "spectrum.h" +#include "spectrumviewimpl.h" + +//TODO add bondxx-radius (H-H-distance for example) + +DetailedInfoDlg::DetailedInfoDlg( Element *el , QWidget *parent, const char *name) + : KDialogBase( IconList, name, Help|User1|User2|Close, Close, parent, name, + false, //non modal + false, + KGuiItem(i18n("Next element", "Next"), "1rightarrow"), + KGuiItem(i18n("Previous element", "Previous"), "1leftarrow")) +{ + m_element = el; + + m_baseHtml = KGlobal::dirs()->findResourceDir("data", "kalzium/data/" ); + m_baseHtml.append("kalzium/data/htmlview/"); + m_baseHtml.append("style.css"); + + m_picsdir = KGlobal::dirs()->findResourceDir( "appdata", "elempics/" ) + "elempics/"; + + ( actionButton( KDialogBase::Close ) )->setFocus(); + + // creating the tabs but not the contents, as that will be done when + // setting the element + createContent(); + + m_actionCollection = new KActionCollection(this); + KStdAction::quit(this, SLOT(slotClose()), m_actionCollection); + + setButtonTip( User2, i18n( "Goes to the previous element" ) ); + setButtonTip( User1, i18n( "Goes to the next element" ) ); + + setElement( el ); +} + +void DetailedInfoDlg::setElement(Element *element) +{ + if ( !element ) return; + + m_element = element; + m_elementNumber = element->number(); + + reloadContent(); + + enableButton( User1, true ); + enableButton( User2, true ); + if ( m_elementNumber == 1 ) + enableButton( User2, false ); + else if ( m_elementNumber == KalziumDataObject::instance()->numberOfElements() ) + enableButton( User1, false ); +} + +KHTMLPart* DetailedInfoDlg::addHTMLTab( const QString& title, const QString& icontext, const QString& iconname ) +{ + QFrame *frame = addPage(title, icontext, BarIcon(iconname)); + QVBoxLayout *layout = new QVBoxLayout( frame ); + layout->setMargin( 0 ); + KHTMLPart *w = new KHTMLPart( frame, "html-part", frame ); + layout->addWidget( w->view() ); + + return w; +} + +void DetailedInfoDlg::fillHTMLTab( KHTMLPart* htmlpart, const QString& htmlcode ) +{ + if ( !htmlpart ) return; + + htmlpart->begin(); + htmlpart->write( htmlcode ); + htmlpart->end(); +} + +QString DetailedInfoDlg::getHtml(DATATYPE type) +{ + QString html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head><title>Chemical data</title><link rel=\"stylesheet\" type=\"text/css\" href=\""; + html += m_baseHtml + "\" /><base href=\"" + m_baseHtml + "\"/></head><body><div class=\"chemdata\">"; + + //get the list of ionisation-energies + QValueList<double> ionlist = m_element->ionisationList(); + + html.append( "<div><table summary=\"header\"><tr><td>" ); + html.append( m_element->symbol() ); + html.append( "<td><td>" ); + html.append( i18n( "Block: %1" ).arg( m_element->block() ) ); + html.append( "</td></tr></table></div>" ); + html.append( "<table summary=\"characteristics\" class=\"characterstics\">"); + switch ( type ) + { + case CHEMICAL: + html.append( "<tr><td><img src=\"structure.png\" alt=\"icon\"/></td><td>" ); + html.append( "<b>" + i18n( "Electronic configuration: %1" ).arg( m_element->parsedOrbits() ) + "</b>" ); + html.append( "</td></tr>" ); + html.append( "<tr><td><img src=\"density.png\" alt=\"icon\"/></td><td>" ); + html.append( "<b>" + i18n( "Density: %1" ).arg( m_element->adjustUnits( Element::DENSITY ) ) + "</b>" ); + html.append( "</td></tr>" ); + html.append( "<tr><td><img src=\"radius.png\" alt=\"icon\"/></td><td><b>" ); + html.append( "<b>" + i18n( "Covalent Radius: %1" ).arg( m_element->adjustRadius( Element::COVALENT ) ) + "</b>" ); + html.append( "</td></tr>" ); + if ( m_element->radius(Element::IONIC) > 0.0 ) + { + html.append( "<tr><td><img src=\"radius.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n( "<b>Ionic Radius (Charge): %1</b> (%2)" ).arg( m_element->adjustRadius(Element::IONIC) ).arg( m_element->ioncharge() ) ); + html.append( "</td></tr>" ); + } + if ( m_element->radius(Element::VDW) > 0.0 ) + { + html.append( "<tr><td><img src=\"radius.png\" alt=\"icon\"/></td><td>" ); + html.append( "<b>" + i18n( "van der Waals Radius: %1" ).arg( m_element->adjustRadius(Element::VDW) ) + "</b>" ); + html.append( "</td></tr>" ); + } + + if ( m_element->radius(Element::ATOMIC) > 0.0 ) + { + html.append( "<tr><td><img src=\"radius.png\" alt=\"icon\"/></td><td><b>" ); + html.append( "<b>" + i18n( "Atomic Radius: %1" ).arg( m_element->adjustRadius(Element::ATOMIC) ) + "</b>" ); + html.append( "</td></tr>" ); + } + + html.append( "<tr><td stype=\"text-align:center\"><img src=\"mass.png\" alt=\"icon\"/></td><td>" ); + html.append( "<b>" + i18n( "Mass: %1" ).arg( m_element->adjustUnits( Element::MASS ) ) + "</b>" ); + html.append( "</td></tr>" ); + if ( !m_element->isotopes().isEmpty() ) + { + html.append( "<tr><td stype=\"text-align:center\"><img src=\"mass.png\" alt=\"icon\"/></td><td>" ); + html.append( isotopeTable() ); + html.append( "</td></tr>" ); + } + break; + case MISC: + html.append( "<tr><td><img src=\"discovery.png\" alt=\"icon\"/></td><td>" ); + html.append( m_element->adjustUnits( Element::DATE ) ); + if ( !m_element->scientist( ).isEmpty() ) + html += "<br />" + i18n("It was discovered by %1").arg(m_element->scientist() ); + html.append( "</td></tr>" ); + + if ( m_element->abundance() > 0 ){ + html.append( "<tr><td><img src=\"abundance.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n( "Abundance in crustal rocks: %1 ppm" ).arg( KGlobal::locale()->formatLong( m_element->abundance() ) ) ); + html.append( "</td></tr>" ); + } + + html.append( "<tr><td><img src=\"mass.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n( "Mean mass: %1 u" ).arg( KalziumUtils::localizedValue( m_element->meanmass(), 6 ) ) ); + html.append( "</td></tr>" ); + if ( !m_element->nameOrigin().isEmpty() ) + { + html.append( "<tr><td><img src=\"book.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n( "Origin of the name: %1" ).arg( m_element->nameOrigin() ) ); + html.append( "</td></tr>" ); + } + if ( m_element->artificial() || m_element->radioactive() ) + { + html.append( "<tr><td><img src=\"structure.png\" alt=\"icon\"/></td><td>" ); + if ( !m_element->radioactive() ) + html.append( i18n( "This element is artificial" )); + else if ( !m_element->artificial() ) + html.append( i18n( "This element is radioactive" )); + else + html.append( i18n( "This element is radioactive and artificial" )); + html.append( "</td></tr>" ); + } + break; + case ENERGY: + html.append( "<tr><td><img src=\"meltingpoint.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n( "Melting Point: %1" ).arg( m_element->adjustUnits( Element::MELTINGPOINT ) ) ); + html.append( "</td></tr>" ); + html.append( "<tr><td><img src=\"boilingpoint.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n( "Boiling Point: %1" ).arg( m_element->adjustUnits( Element::BOILINGPOINT ) ) ); + html.append( "</td></tr>" ); + html.append( "<tr><td><img src=\"structure.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n( "Electronegativity: %1" ).arg( m_element->adjustUnits( Element::EN ) ) ); + html.append( "</td></tr>" ); + html.append( "<tr><td><img src=\"electronaffinity.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n( "Electron affinity: %1 " ).arg( m_element->adjustUnits(Element::EA) ) ); + html.append( "</td></tr>" ); + + + uint i = 0; + for ( ; i < ionlist.count() ; ++i ) + { + html.append( "<tr><td><img src=\"ionisation.png\" alt=\"icon\"/></td><td>" ); + html.append( i18n("the first variable is a number. The result is for example '1.' or '5.', the second is the value of the ionisation energy", + "%1. Ionization energy: %2" ).arg( QString::number( i+1 ), m_element->adjustUnits( Element::IE, ionlist[i] ) ) ); + html.append( "</td></tr>" ); + } + break; + } + + html += ( "</table>" ); + html += "</div></body></html>"; + + return html; +} + +QString DetailedInfoDlg::isotopeTable() +{ + QValueList<Isotope*> list = m_element->isotopes(); + + QString html; + + html = "<table class=\"isotopes\" cellspacing=\"0\"><tr><td colspan=\"7\">"; + html += i18n( "Isotope-Table" ); + html += "</tr></td><tr><td><b>"; + html += i18n( "Mass" ); + html += "</b></td><td><b>"; + html += i18n( "Neutrons" ); + html += "</b></td><td><b>"; + html += i18n( "Percentage" ); + html += "</b></td><td><b>"; + html += i18n( "Half-life period" ); + html += "</b></td><td><b>"; + html += i18n( "Energy and Mode of Decay" ); + html += "</b></td><td><b>"; + html += i18n( "Spin and Parity" ); + html += "</b></td><td><b>"; + html += i18n( "Magnetic Moment" ); + html += "</b></td></tr>"; + + QValueList<Isotope*>::const_iterator it = list.begin(); + const QValueList<Isotope*>::const_iterator itEnd = list.end(); + + for ( ; it != itEnd; ++it ) + { + html.append( "<tr><td align=\"right\">" ); + if ( ( *it )->weight() > 0.0 ) + html.append( i18n( "%1 u" ).arg( KalziumUtils::localizedValue( ( *it )->weight(), 6 ) ) ); + // html.append( i18n( "%1 u" ).arg( QString::number( ( *it )->weight() ) )); + html.append( "</td><td>" ); + html.append( QString::number( ( *it )->neutrons() ) ); + html.append( "</td><td>" ); + if ( ( *it )->percentage() > 0.0 ) + html.append( i18n( "this can for example be '24%'", "%1%" ).arg( KalziumUtils::localizedValue( ( *it )->percentage(), 6 ) ) ); + html.append( "</td><td>" ); + if ( ( *it )->halflife() > 0.0 ) { + html.append( ( *it )->halflifeAsString() ); + } + html.append( "</td><td>" ); + if ( ( *it )->alphapercentage() > 0.0 ){ + if ( ( *it )->alphadecay() > 0.0 ) + html.append( i18n( "%1 MeV" ).arg( KalziumUtils::localizedValue( ( *it )->alphadecay(), 6 ) ) ); + html.append( i18n( " %1" ).arg( QChar( 945 ) ) ); + if ( ( *it )->alphapercentage() < 100.0) + html.append( i18n( "(%1%)" ).arg( KalziumUtils::localizedValue( (*it )->alphapercentage(), 6 ) ) ); + if ( ( *it )->betaminuspercentage() > 0.0 || ( *it )->betapluspercentage() > 0.0 || ( *it )->ecpercentage() > 0.0) + html.append( i18n( ", " ) ); + } + if ( ( *it )->betaminuspercentage() > 0.0 ){ + if ( ( *it )->betaminusdecay() > 0.0 ) + html.append( i18n( "%1 MeV" ).arg( KalziumUtils::localizedValue( ( *it )->betaminusdecay(), 6 ) ) ); + html.append( i18n( " %1<sup>-</sup>" ).arg( QChar( 946 ) ) ); + if ( ( *it )->betaminuspercentage() < 100.0) + html.append( i18n( "(%1%)" ).arg( KalziumUtils::localizedValue( ( *it )->betaminuspercentage(), 6 ) )); + if ( ( *it )->betapluspercentage() > 0.0 || ( *it )->ecpercentage() > 0.0 ) + html.append( i18n( ", " ) ); + } + if ( ( *it )->betapluspercentage() > 0.0 ){ + if ( ( *it )->betaplusdecay() > 0.0 ) + html.append( i18n( "%1 MeV" ).arg( KalziumUtils::localizedValue( ( *it )->betaplusdecay(), 6 ) ) ); + html.append( i18n( " %1<sup>+</sup>" ).arg(QChar( 946 ) ) ); + if ( ( *it )->betapluspercentage() == ( *it )->ecpercentage() ) { + if ( ( *it )->ecdecay() > 0.0 ) { + html.append( i18n( "%1 MeV" ).arg( KalziumUtils::localizedValue( ( *it )->ecdecay(), 6 ) ) ); + } + html.append( i18n( "Acronym of Electron Capture"," EC" ) ); + } + if ( ( *it )->betapluspercentage() < 100.0) + html.append( i18n( "(%1%)" ).arg( KalziumUtils::localizedValue( ( *it )->betapluspercentage(), 6 ) ) ); + html += " "; + } + if ( ( *it )->ecpercentage() > 0.0 && ( *it )->ecpercentage()!=( *it )->betapluspercentage()){ + if ( ( *it )->ecdecay() > 0.0 ) + html.append( i18n( "%1 MeV" ).arg( KalziumUtils::localizedValue( ( *it )->ecdecay(), 6 ) ) ); + html.append( i18n( "Acronym of Electron Capture"," EC" ) ); + if ( ( *it )->ecpercentage() < 100.0 ) + html.append( i18n( "(%1%)" ).arg( KalziumUtils::localizedValue( ( *it )->ecpercentage(), 6 ) ) ); + } + html.append( "</td><td>" ); + html.append( ( *it )->spin() ); + html.append( "</td><td>" ); + if ( !( *it )->magmoment().isEmpty() ) { + QString v = KGlobal::locale()->formatNumber( ( *it )->magmoment(), false, 6 ); + html.append( i18n( "%1 %2<sub>n</sub>" ).arg( v ).arg( QChar( 956 ) ) ); + } + html.append( "</td></tr>" ); + + } + + html += "</table>"; + + return html; +} + +void DetailedInfoDlg::createContent( ) +{ + // overview tab + QFrame *m_pOverviewTab = addPage( i18n( "Overview" ), i18n( "Overview" ), BarIcon( "overview" ) ); + QVBoxLayout *overviewLayout = new QVBoxLayout( m_pOverviewTab ); + overviewLayout->setMargin( 0 ); + dTab = new DetailedGraphicalOverview( m_pOverviewTab, "DetailedGraphicalOverview" ); + overviewLayout->addWidget( dTab ); + + // picture tab + QFrame *m_pPictureTab = addPage( i18n( "Picture" ), i18n( "What does this element look like?" ), BarIcon( "elempic" ) ); + QVBoxLayout *mainLayout = new QVBoxLayout( m_pPictureTab ); + mainLayout->setMargin( 0 ); + piclabel = new QLabel( m_pPictureTab ); + piclabel->setMinimumSize( 400, 350 ); + mainLayout->addWidget( piclabel ); + + // atomic model tab + QFrame *m_pModelTab = addPage( i18n( "Atom Model" ), i18n( "Atom Model" ), BarIcon( "orbits" ) ); + QVBoxLayout *modelLayout = new QVBoxLayout( m_pModelTab ); + modelLayout->setMargin( 0 ); + wOrbits = new OrbitsWidget( m_pModelTab ); + modelLayout->addWidget( wOrbits ); + + // html tabs + m_htmlpages["chemical"] = addHTMLTab( i18n( "Chemical Data" ), i18n( "Chemical Data" ), "chemical" ); + m_htmlpages["energies"] = addHTMLTab( i18n( "Energies" ), i18n( "Energy Information" ), "energies" ); + m_htmlpages["misc"] = addHTMLTab( i18n( "Miscellaneous" ), i18n( "Miscellaneous" ), "misc" ); + + // spectrum widget tab + QFrame *m_pSpectrumTab = addPage( i18n("Spectrum"), i18n( "Spectrum" ), BarIcon( "spectrum" )); + QVBoxLayout *spectrumLayout = new QVBoxLayout( m_pSpectrumTab , 0, KDialog::spacingHint() ); + spectrumLayout->setMargin( 0 ); + m_spectrumStack = new QWidgetStack( m_pSpectrumTab ); + spectrumLayout->addWidget( m_spectrumStack ); + m_spectrumview = new SpectrumViewImpl( m_spectrumStack, "spectrumwidget" ); + m_spectrumStack->addWidget( m_spectrumview ); + m_spectrumLabel = new QLabel( m_spectrumStack ); + m_spectrumStack->addWidget( m_spectrumLabel ); +} + +void DetailedInfoDlg::reloadContent() +{ + // reading the most common data + const QString element_name = m_element->elname(); + const QString element_symbol = m_element->symbol(); + + // updating caption + setCaption( i18n( "For example Carbon (6)" , "%1 (%2)" ).arg( element_name ).arg( m_elementNumber ) ); + + // updating overview tab + dTab->setElement( m_element ); + + // updating picture tab + QString picpath = m_picsdir + element_symbol + ".jpg"; + if ( QFile::exists( picpath ) ) + { + QImage img( picpath, "JPEG" ); + img = img.smoothScale ( 400, 400, QImage::ScaleMin ); + QPixmap pic; + pic.convertFromImage( img ); + piclabel->setPixmap( pic ); + } + else + piclabel->setText( i18n( "No picture of %1 found." ).arg( element_name ) ); + + // updating atomic model tab + wOrbits->setElementNumber( m_elementNumber ); + QWhatsThis::add( wOrbits, + i18n( "Here you can see the atomic hull of %1. %2 has the configuration %3." ) + .arg( m_element->elname() ) + .arg( m_element->elname() ) + .arg( m_element->parsedOrbits() ) ); + + // updating html tabs + fillHTMLTab( m_htmlpages["chemical"], getHtml( CHEMICAL ) ); + fillHTMLTab( m_htmlpages["energies"], getHtml( ENERGY ) ); + fillHTMLTab( m_htmlpages["misc"], getHtml( MISC ) ); + + // updating spectrum widget + if ( m_element->hasSpectrum() ) + { + delete m_spectrumview; + + m_spectrumview = new SpectrumViewImpl( m_spectrumStack, "spectrumwidget" ); + m_spectrumview->setSpectrum( m_element->spectrum() ); + m_spectrumStack->addWidget( m_spectrumview ); + m_spectrumStack->raiseWidget( m_spectrumview ); + } + else + { + m_spectrumLabel->setText( i18n( "No spectrum of %1 found." ).arg( element_name ) ); + m_spectrumStack->raiseWidget( m_spectrumLabel ); + } +} + +void DetailedInfoDlg::slotHelp() +{ + emit helpClicked(); + + QString chapter = "infodialog_overview"; + switch ( activePageIndex() ){ + case 0: + chapter = "infodialog_overview"; + break; + case 1: + chapter = "infodialog_picture"; + break; + case 2: + chapter = "infodialog_orbits"; + break; + case 3: + chapter = "infodialog_chemical"; + break; + case 4: + chapter = "infodialog_energies"; + break; + case 5: + chapter = "infodialog_misc"; + break; + case 6: + chapter = "infodialog_spectrum"; + break; + } + + if ( kapp ) + kapp->invokeHelp ( chapter, "kalzium" ); +} + +void DetailedInfoDlg::wheelEvent( QWheelEvent *ev ) +{ + if ( ev->delta() < 0 ) + // setting the previous element + slotUser2(); + else + // setting the next element + slotUser1(); +} + +void DetailedInfoDlg::slotUser1() +{ +// setting the next element + if ( m_elementNumber < KalziumDataObject::instance()->numberOfElements() ) + { + setElement( KalziumDataObject::instance()->element( m_elementNumber + 1 ) ); + // no need to increment m_elementNumber here too, + // as it's already done by setElement + emit elementChanged( m_elementNumber ); + } +} + +void DetailedInfoDlg::slotUser2() +{ +// setting the previous element + if ( m_elementNumber > 1 ) + { + setElement( KalziumDataObject::instance()->element( m_elementNumber - 1 ) ); + // no need to decrement m_elementNumber here too, + // as it's already done by setElement + emit elementChanged( m_elementNumber ); + } +} + +#include "detailinfodlg.moc" diff --git a/kalzium/src/detailinfodlg.h b/kalzium/src/detailinfodlg.h new file mode 100644 index 00000000..d5dacc29 --- /dev/null +++ b/kalzium/src/detailinfodlg.h @@ -0,0 +1,122 @@ +/*************************************************************************** + begin : Tue Apr 2 20:43:44 2002 UTC + copyright : (C) 2003, 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef _DETAILINFODLG_H_ +#define _DETAILINFODLG_H_ + +#include <kdialogbase.h> + +#include <qmap.h> + +class DetailedGraphicalOverview; +class Element; +class OrbitsWidget; +class SpectrumViewImpl; + +class QMouseEvent; +class QFrame; +class QLabel; +class QVBoxLayout; +class KActionCollection; +class KHTMLPart; + +/** + * @short The dialog which shows all available information of an element + * @author Carsten Niehaus + */ +class DetailedInfoDlg : public KDialogBase +{ + Q_OBJECT + + public: + DetailedInfoDlg( Element *el , QWidget *parent=0, const char *name=0); + + void setElement(Element *el); + + private: + enum DATATYPE + { + CHEMICAL = 0, + MISC, + ENERGY + }; + + Element *m_element; + int m_elementNumber; + + KActionCollection* m_actionCollection; + + SpectrumViewImpl *m_spectrumview; + + QString isotopeTable(); + + QMap<QString, KHTMLPart*> m_htmlpages; + + QLabel *piclabel; + + QWidgetStack* m_spectrumStack; + QLabel* m_spectrumLabel; + + DetailedGraphicalOverview *dTab; + + OrbitsWidget *wOrbits; + + /** + * Create the inital set of tabs. Used it *ONLY* once in the + * constructor. + */ + void createContent(); + void reloadContent(); + + QString getHtml(DATATYPE); + + QString m_baseHtml; + QString m_picsdir; + + /** + * Add a new HTML page to the dialog. + * + * @param title The title of the tab, appears above the htmlview + * @param icontext The name of the tab, appears belov or instead + * of the icon + * @param iconname The name of the icon + * @returns the pointer to the resulting KHTMLPart, needed for + * writing HTML code on it + */ + KHTMLPart* addHTMLTab( const QString& title, const QString& icontext, const QString& iconname ); + /** + * Change the HTML code in an HTML page. + * + * @param htmlpart the KHTMLPart to edit + * @param htmlcode the HTML code to display + */ + void fillHTMLTab( KHTMLPart* htmlpart, const QString& htmlcode ); + + protected slots: + virtual void slotUser1(); + virtual void slotUser2(); + /** + * invoke the help of the correct chapter + */ + virtual void slotHelp(); + + protected: + virtual void wheelEvent ( QWheelEvent * ev ); + + signals: + void elementChanged( int ); +}; + +#endif diff --git a/kalzium/src/element.cpp b/kalzium/src/element.cpp new file mode 100644 index 00000000..a909a5ac --- /dev/null +++ b/kalzium/src/element.cpp @@ -0,0 +1,548 @@ +/*************************************************************************** + * Copyright (C) 2003, 2004, 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "element.h" +#include "prefs.h" +#include "spectrum.h" +#include "isotope.h" +#include "kalziumdataobject.h" +#include "kalziumutils.h" +#include "tempunit.h" + +#include <qdom.h> +#include <qfile.h> +#include <qpainter.h> +#include <qregexp.h> +#include <qfontmetrics.h> + +#include <kdebug.h> +#include <klocale.h> +#include <kurl.h> +#include <kstandarddirs.h> + +Element::Element() +{ + m_radioactive = false; + m_artificial = false; + m_abundance = 0; +} + +Isotope* Element::isotopeByNucleons( int numberOfNucleons ) +{ + QValueList<Isotope*>::ConstIterator it = m_isotopeList.begin(); + const QValueList<Isotope*>::ConstIterator itEnd = m_isotopeList.end(); + + for ( ; it != itEnd; ++it ) + { + if ( ( ( *it )->neutrons() + ( *it )->protones() ) == numberOfNucleons ) + return *it; + } + return 0; +} + +QString Element::parsedOrbits( bool canBeEmpty ) +{ + if ( m_orbits.isEmpty() ) + if ( !canBeEmpty ) + return i18n( "structure means orbital configuration in this case", "Unknown structure" ); + else + return ""; + + QString orbits = m_orbits; + QRegExp rxs("([a-z])([0-9]+)"); + QRegExp rxb("([a-z]{2}) ",false); + orbits.replace(rxs,"\\1<sup>\\2</sup>"); //superscript around electron number + orbits.replace(rxb,"<b>\\1</b> "); //bold around element symbols + return orbits; +} + +Element::~Element() +{ +} + +double Element::meanmass() +{ + return m_mass/m_number; +} + +const QString Element::adjustRadius( RADIUSTYPE rtype ) +{ + double val = 0.0; + QString v; + + switch ( rtype ) + { + case ATOMIC: + val = m_RadiusAR; + break; + case IONIC: + val = m_RadiusIon; + break; + case COVALENT: + val = m_RadiusCR; + break; + case VDW: + val = m_RadiusVDW; + break; + } + + if ( val <= 0 ) + v = i18n( "Value unknown" ); + else + v = i18n( "%1 is a length, eg: 12.3 pm", "%1 pm" ).arg( KalziumUtils::localizedValue( val, 6 ) ); + return v; +} + +const QString Element::adjustUnits( const int type, double value ) +{ + QString v; + if ( type == IE ) //an ionization energy + { + if ( Prefs::energies() == 0 ) + { + value*=96.6; + v = KalziumUtils::localizedValue( value, 6 ); + v.append( " kJ/mol" ); + } + else // use electronvolt + { + v = KalziumUtils::localizedValue( value, 6 ); + v.append( " eV" ); + } + } + return v; +} + +const QString Element::adjustUnits( const int type ) +{ + QString v = QString::null; + + double val = 0.0; //the value to convert + + if ( type == BOILINGPOINT || type == MELTINGPOINT ) // convert a temperature + { + if ( type == BOILINGPOINT ) + val = boiling(); + else + val = melting(); + + if ( val <= 0 ) + v = i18n( "Value unknown" ); + else + { + double newvalue = TempUnit::convert( val, (int)TempUnit::Kelvin, Prefs::temperature() ); + QString strVal = KalziumUtils::localizedValue( newvalue, 6 ); + switch (Prefs::temperature()) { + case 0: //Kelvin + v = i18n( "%1 is the temperature in Kelvin", "%1 K" ).arg( strVal ); + break; + case 1://Kelvin to Celsius + v = i18n( "%1 is the temperature in Celsius", "%1 %2C" ).arg( strVal ).arg( QChar(0xB0) ); + break; + case 2: // Kelvin to Fahrenheit + v = i18n( "%1 is the temperature in Fahrenheit", "%1 %2F" ).arg( strVal ).arg( QChar(0xB0) ); + break; + case 3: // Kelvin to Rankine + v = i18n( "%1 is the temperature in Rankine", "%1 %2Ra" ).arg( strVal ).arg( QChar(0xB0) ); + break; + case 4: // Kelvin to Reaumur + v = i18n( "%1 is the temperature in Reaumur", "%1 %2R" ).arg( strVal ).arg( QChar(0xB0) ); + break; + } + } + } + else if ( type == EN ) //Electronegativity + { + val = electroneg(); + if ( val <= 0 ) + v = i18n( "Value not defined" ); + else { + v = KalziumUtils::localizedValue( val, 6 ); + } + } + else if ( type == EA ) //Electron affinity + { + val = electroaf(); + if ( val == 0.0 ) + v = i18n( "Value not defined" ); + else + { + if ( Prefs::energies() == 0 ) + { + v = i18n( "%1 kJ/mol" ).arg( KalziumUtils::localizedValue( val, 6 ) ); + } + else // use electronvolt + { + val/=96.6; + v = i18n( "%1 eV" ).arg( KalziumUtils::localizedValue( val, 6 ) ); + } + } + } + else if ( type == MASS ) // its a mass + { + val = mass(); + if ( val <= 0 ) + v = i18n( "Value unknown" ); + else + v = i18n( "%1 u" ).arg( KalziumUtils::localizedValue( val, 6 ) ); + } + else if ( type == DENSITY ) // its a density + { + val = density(); + + if ( val <= 0 ) + v = i18n( "Value unknown" ); + else + { + if ( boiling() < 295.0 && melting() < 295.0)//gasoline + { + v = i18n( "%1 g/L" ).arg( KalziumUtils::localizedValue( val, 6 ) ); + } + else//liquid or solid + { + v = i18n( "%1 g/cm<sup>3</sup>" ).arg( KalziumUtils::localizedValue( val, 6 )); + } + } + } + else if ( type == DATE ) //its a date + { + val = date(); + if ( val < 1600 ) + { + v = i18n( "This element was known to ancient cultures" ); + } + else + { + v = i18n( "This element was discovered in the year %1" ).arg( QString::number( val ) ); + } + } + + return v; +} + +void Element::drawStateOfMatter( QPainter* p, double temp ) +{ + //the height of a "line" inside an element + int h_small = 15; //the size for the small units like elementnumber + + //The X-coordiante + int X = xPos(); + + //The Y-coordinate + int Y = yPos(); + + QColor color = currentColor( temp ); + + p->setPen( color ); + p->fillRect( X, Y,ELEMENTSIZE,ELEMENTSIZE, color ); + + QString text; + QFont symbol_font = p->font(); + + symbol_font.setPointSize( 10 ); + QFont f = p->font(); + f.setPointSize( 9 ); + + p->setFont( f ); + + //top left + p->setPen( Qt::black ); + text = KalziumUtils::localizedValue( KalziumUtils::strippedValue( mass( ) ), 6 ); + p->drawText( X,Y ,ELEMENTSIZE,h_small,Qt::AlignCenter, text ); + + text = QString::number( number() ); + p->drawText( X,Y+ELEMENTSIZE-h_small , ELEMENTSIZE, h_small,Qt::AlignCenter, text ); + + p->setFont( symbol_font ); + p->drawText( X,Y, ELEMENTSIZE,ELEMENTSIZE,Qt::AlignCenter, symbol() ); + + //border + p->setPen( Qt::black ); + p->drawRect( X, Y,ELEMENTSIZE+1,ELEMENTSIZE+1); +} + +QColor Element::currentColor( const double temp ) +{ + QColor color; + + //take the colours for the given temperature + const double iButton_melting = melting(); + const double iButton_boiling = boiling(); + + //If either the mp or bp is not known return + //This is to avoid undefined behaviour +// if ( iButton_boiling <= 0.0 || iButton_melting <= 0.0 ) +// return Qt::lightGray; + + if ( temp < iButton_melting ) + { //the element is solid + color= Prefs::color_solid(); + } + else if ( temp > iButton_melting && + temp < iButton_boiling ) + { //the element is liquid + color= Prefs::color_liquid(); + } + else if ( temp > iButton_boiling && iButton_boiling > 0.0 ) + { //the element is vaporous + color= Prefs::color_vapor(); + } + else + color = Qt::lightGray; + + return color; +} + + +void Element::drawGradient( QPainter* p, const QString& value, const QColor& c) +{ + //Set the elementColor to c to make the overviewwidget show + //the correct color + setElementColor( c ); + + //the height of a "line" inside an element + int h_small = 10; //the size for the small units like elementnumber + + //The X-coordiante + int X = xPos(); + + //The Y-coordinate + int Y = yPos(); + + p->setPen( c ); + p->fillRect( X, Y,ELEMENTSIZE,ELEMENTSIZE, c ); + + p->setPen( Qt::black ); + QFont symbol_font = p->font(); + QFont f = p->font(); + + f.setPointSize( KalziumUtils::maxSize(value, QRect( X,Y+ELEMENTSIZE-h_small, ELEMENTSIZE, h_small ),f, p ) ); + p->setFont( f ); + + p->drawText( X,Y+ELEMENTSIZE-h_small , ELEMENTSIZE, h_small,Qt::AlignCenter, value ); + + const QRect rect = QRect( X,Y,ELEMENTSIZE-2,ELEMENTSIZE-10 ); + int goodsize = KalziumUtils::maxSize( symbol(), rect, symbol_font, p ); + symbol_font.setPointSize( goodsize ); + p->setFont( symbol_font ); + p->drawText( X+1,Y+5, ELEMENTSIZE-2,ELEMENTSIZE-10,Qt::AlignCenter, symbol() ); + + //border + p->setPen( Qt::black ); + p->drawRect( X, Y,ELEMENTSIZE+1,ELEMENTSIZE+1); +} + +void Element::drawGrayedOut( QPainter *p ) +{ + //The X-coordiante + int X = xPos(); + + //The Y-coordinate + int Y = yPos(); + + p->fillRect( X, Y,ELEMENTSIZE,ELEMENTSIZE, Qt::lightGray ); + + p->setPen( Qt::darkGray ); + + QFont symbol_font = p->font(); + const QRect rect = QRect( X,Y,ELEMENTSIZE-2,ELEMENTSIZE-10 ); + int goodsize = KalziumUtils::maxSize( symbol(), rect, symbol_font, p ); + symbol_font.setPointSize( goodsize ); + p->setFont( symbol_font ); + p->drawText( X+1,Y+5, ELEMENTSIZE-2,ELEMENTSIZE-10,Qt::AlignCenter, symbol() ); + + p->setPen( Qt::black ); + p->drawRect( X, Y,ELEMENTSIZE+1,ELEMENTSIZE+1); +} + +void Element::drawSelf( QPainter* p, bool simple, bool isCrystal ) +{ + //the height of a "line" inside an element + int h_small = 12; //the size for the small units like elementnumber + + //The X-coordiante + int X = xPos(); + + //The Y-coordinate + int Y = yPos(); + + p->setPen( elementColor() ); + p->fillRect( X, Y,ELEMENTSIZE,ELEMENTSIZE, elementColor() ); + p->setPen( Qt::black ); + + QString text; + QFont symbol_font = p->font(); + + const int max = ELEMENTSIZE-10; + + const QRect rect = QRect( X,Y,ELEMENTSIZE-2,max ); + + int goodsize = KalziumUtils::maxSize( symbol(), rect, symbol_font, p ); + symbol_font.setPointSize( goodsize ); + p->setFont( symbol_font ); + + if ( !simple ) + p->drawText( X+1,Y+5, ELEMENTSIZE-2,max,Qt::AlignCenter, symbol() ); + else + p->drawText( X+1,Y+5, ELEMENTSIZE-2,max,Qt::AlignHCenter, symbol() ); + + QFont f = p->font(); + + QRect smallRect( X,Y ,ELEMENTSIZE-4,h_small ); + f.setPointSize( KalziumUtils::maxSize( QString::number( number() ), smallRect, f, p ) ); + + p->setFont( f ); + + if ( !simple ) + {//the user only wants a simple periodic table, don't weight the cell + QString text; + if ( isCrystal ) + { + QString structure = crystalstructure(); + /** + * hcp: hexagonal close packed + * fcc: face centered cubic + * krz/bcc body centered cubic// kubisch raumzentriert + * kdp: kubisch dicht gepackt + * hdp: hexagonal dicht gepackt + * ccp: cubic close packed // kubisch dichteste Kugelpackung + * d : diamond + * sc : simple cubic + * tet: tetragonal + * rh : rhombohedral + * or : orthorhombic + * mono: monoclinic + */ + if ( structure == "own") + text = i18n( "this means, the element has its 'own' structur", "own" ); + else if ( structure == "bcc" ) + text = i18n( "Crystalsystem body centered cubic", "bcc" ); + else if ( structure == "hdp" ) + text = i18n( "Crystalsystem hexagonal dense packed", "hdp" ); + else if ( structure == "ccp" ) + text = i18n( "Crystalsystem cubic close packed", "ccp" ); + } + else + text = KalziumUtils::localizedValue( KalziumUtils::strippedValue( mass( ) ), 6 ); + p->drawText( X+2,Y ,ELEMENTSIZE-4 ,h_small,Qt::AlignCenter, text ); + } + + text = QString::number( number() ); + p->drawText( X+2,Y+ELEMENTSIZE-h_small , ELEMENTSIZE-4, h_small,Qt::AlignCenter, text ); + + p->drawRect( X, Y,ELEMENTSIZE+1,ELEMENTSIZE+1); +} + +/*! + This looks pretty evil and it is. The problem is that a PerodicTableView is pretty + irregular and you cannot "calculate" the position. + */ +void Element::setupXY() +{ + static const int posXRegular[111] = {1,18, + 1,2,13,14,15,16,17,18, + 1,2,13,14,15,16,17,18, + 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, + 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, //Element 54 (Xe) + 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, //Element 71 (Lu) + 4,5,6,7,8,9,10,11,12,13,14,15,16,17,18, + 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17, //Element 71 (Lr) + 4,5,6,7,8,9,10,11}; + static const int posYRegular[111] = {1,1, + 2,2, 2, 2, 2, 2, 2, 2, + 3,3, 3, 3, 3, 3, 3, 3, + 4,4,4,4,4,4,4,4,4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 5,5,5,5,5,5,5,5,5, 5, 5, 5, 5, 5, 5, 5, 5, 5, //Element 54 (Xe) + 6,6,6,8,8,8,8,8,8, 8, 8, 8, 8, 8, 8, 8, 8, //Element 71 (Lr) + 6,6,6,6,6,6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 7,7,7,9,9,9,9,9,9, 9, 9, 9, 9, 9, 9, 9, 9, + 7,7,7,7,7,7,7,7}; + + x = posXRegular[m_number-1]; + y = posYRegular[m_number-1]; +} + +void Element::setRadius( RADIUSTYPE type, double value, const QString& name ) +{ + switch ( type ) + { + case ATOMIC: + m_RadiusAR = value; + break; + case IONIC: + m_RadiusIon = value; + m_ionvalue = name; + break; + case COVALENT: + m_RadiusCR = value; + break; + case VDW: + m_RadiusVDW = value; + break; + } +} + +double Element::radius( RADIUSTYPE type ) +{ + switch ( type ) + { + case ATOMIC: + return m_RadiusAR; + break; + case IONIC: + return m_RadiusIon; + break; + case COVALENT: + return m_RadiusCR; + break; + case VDW: + return m_RadiusVDW; + break; + } + return 0.0; +} + +int Element::xPos() const +{ + return ( x-1 )*ELEMENTSIZE; +} + +int Element::yPos() const +{ + // mind the small gap over rare earth! + int tmp_y = ( y-1 )*ELEMENTSIZE + ELEMENTSIZE; + + // 57=Lanthanum, 72=Hafnium, 89=Actinium & 104=Rutherfordium (i.e., if + // n_number is in rare earth's block) + if ( (m_number > 57 && m_number < 72) || (m_number > 89 && m_number < 104) ) + tmp_y += ELEMENTSIZE/3; + + return tmp_y; +} + +QPoint Element::pos() const +{ + return QPoint( xPos(), yPos() ); +} + +QPoint Element::coords() const +{ + return QPoint( x, y ); +} diff --git a/kalzium/src/element.h b/kalzium/src/element.h new file mode 100644 index 00000000..c3d2b091 --- /dev/null +++ b/kalzium/src/element.h @@ -0,0 +1,515 @@ +/*************************************************************************** + * Copyright (C) 2003, 2004, 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef ELEMENT_H +#define ELEMENT_H + +#define ELEMENTSIZE 40 + +#include <qcolor.h> +#include <qvaluelist.h> + +class Element; +class QDomDocument; +class QPainter; +class QPoint; +class QFont; +class QRect; +class Spectrum; +class Isotope; + +struct coordinate; + +typedef QValueList<Element*> EList; +typedef QValueList<coordinate> CList; +typedef QValueList<double> doubleList; + +struct coordinate{ + int x; + int y; +}; + +/** + * In this class all information about an element are stored. This means that + * both the chemical date and the data about the position are stored + * in this class. + * @short This class is the represention of a chemical element + * @author Carsten Niehaus +*/ +class Element{ + public: + Element(); + + virtual ~Element(); + + /** + * @returns a pointer to the istope with @p numberOfNucleons + * nucleons + */ + Isotope* isotopeByNucleons( int numberOfNucleons ); + + enum RADIUSTYPE + { + ATOMIC = 0, + IONIC, + VDW, //van der Waals radius + COVALENT + }; + + /** + * @return the number of the element + */ + int number() const { + return m_number; + } + + /** + * @return if the Element is radioactive + */ + bool radioactive() const{ + return m_radioactive; + } + + /** + * @return if the Element is artificial + */ + bool artificial() const{ + return m_artificial; + } + + /** + * @return the information where the name of the Element comes from + */ + QString nameOrigin() const{ + return m_origin; + } + + QString orbits() const{ + return m_orbits; + } + + void setMass( double value ) { m_mass = value; } + void setEN( double value ) { m_EN = value; } + void setEA( double value ) { m_EA = value; } + void setMeltingpoint( double value ) { m_MP = value; } + void setBoilingpoint( double value ) { m_BP = value; } + + /** + * sets the density of the Element + * @param value the density of the Element + */ + void setDensity( double value ) { m_Density = value; } + + /** + * set the radius of the radiustype @p type to the value @p value. + * The ionicradius also has a name @p name. This will store the charge of + * the ion (for example, +2 or -3 ) + */ + void setRadius( RADIUSTYPE type, double value, const QString& name = 0 ); + + void setDate( int date ) { m_date = date; } + void setPeriod( int period ){ m_period = period; } + void setBiologicalMeaning( int value ) { m_biological = value; } + void setNumber( int num ){ m_number = num; } + + /** + * set the abundance in crustal rocks [pm] + * @param abundance the abundace in crustal rocks + */ + void setAbundance( int abundance ){ m_abundance = abundance; } + + void setScientist( const QString& value ) { m_scientist = value; } + void setCrysatalstructure( const QString& value ) { m_crystalstructure = value; } + void setName( const QString& value ) { m_name = value; } + void setOrigin( const QString& value ) { m_origin = value; } + void setBlock( const QString& value ) { m_block = value; } + void setGroup( const QString& value ) { m_group = value; } + void setFamily( const QString& value ) { m_family = value; } + void setOrbits( const QString& value ) { m_orbits = value; } + void setSymbol( const QString& value ) { m_symbol = value; } + void setOxydation( const QString& value ) { m_oxstage = value; } + void setAcidicbehaviour( const QString& value ) { m_acidbeh = value; } + void setIsotopes( const QString& value ) { m_isotopes = value; } + + void setArtificial(){ m_artificial = true; } + void setRadioactive(){ m_radioactive = true; } + + void setIonisationList( doubleList l ){ m_ionenergies = l; } + + QValueList<Isotope*> isotopes() const{ + return m_isotopeList; + } + + QValueList<double> spectrumList() const{ + return m_spectrumList; + } + + void setIsotopeList( QValueList<Isotope*> list ){ + m_isotopeList = list; + } + + /** + * sets the Spectrum of the Element + * @param spec the Spectrum of the Element + */ + void setSpectrum( Spectrum *spec ){ + m_spectrum = spec; + } + + /** + * @return if the element has information about spectra + */ + bool hasSpectrum() const{ + return m_hasSpectrum; + } + + /** + * define if the element has a known Spectrum + * @param value if true, the Element has a Spectrum + */ + void setHasSepctrum(bool value){ + m_hasSpectrum = value; + } + + /** + * @return the Spectrum of the element + */ + Spectrum* spectrum() const{ + return m_spectrum; + } + + doubleList ionisationList() const{ + return m_ionenergies; + } + + /** + * @return the date of discovery of the element + */ + int date() const { + return m_date; + } + + /** + * return the correct color of the element at the + * temperature @p temp + */ + QColor currentColor( const double temp ); + + /** + * mutator for the element's color + */ + void setElementColor( const QColor &c ) { m_Color = c; } + + /** + * @return the importance of the element for biological + * systems. + * @li 0: blah + * @li 1: blub + * @li 2: blub + * @li 3: blub + * @li 4: blub + * @li 5: blub + * @li 6: blub + */ + int biological() const { + return m_biological; + } + + /** + * @return the abundance in crustal rocks in parts per million + */ + int abundance() const { + return m_abundance; + } + + /** + * @return the symbol of the element + */ + QString symbol() const { + return m_symbol; + } + + /** + * @return the scientist who discovered the element + */ + QString scientist() const{ + return m_scientist; + } + + /** + * @return the crystal structure of the element + */ + QString crystalstructure() const{ + return m_crystalstructure; + } + + /** + * @return the name of the element + */ + QString elname() const { + return m_name; + } + + //FIXME I need to add a way to have more than one ionic radius + QString ioncharge() const{ + return m_ionvalue; + } + + /** + * @return the chemical block (s, p, d, f) of the element + */ + QString block() const { + return m_block; + } + + /** + * @return the group of the element + */ + QString group() const { + return m_group; + } + + int period() const { + return m_period; + } + + QString family() const { + return m_family; + } + + /** + * @return the acidic behavior of the element + */ + QString acidicbeh() const { + return m_acidbeh; + } + + /** + * @return the oxydationstages of the element + */ + QString oxstage() const { + return m_oxstage; + } + + /** + * @return the orbits of the element. The QString is already + * parsed so that the numbers are superscripts and the first + * block is bold. + * @param canBeEmpty specifies if the string returned can be + * empty instead of a "Unknown structure" one. + */ + QString parsedOrbits( bool canBeEmpty = false ); + + /** + * @return the boiling point of the element in Kelvin + */ + double boiling() const { + return m_BP; + } + + /** + * @return the melting point of the element in Kelvin + */ + double melting() const { + return m_MP; + } + + /** + * @return the electronegativity of the element in the + * Pauling-scale + */ + double electroneg() const { + return m_EN; + } + + /** + * @return the electroaffinity of the element + */ + double electroaf() const { + return m_EA; + } + + /** + * @return the atomic mass of the element in units + */ + double mass() const { + return m_mass; + } + + /** + * @return the density of the element in gramms per mol + */ + double density() const { + return m_Density; + } + + /** + * @return the radius of the element in picometers + */ + double radius( RADIUSTYPE type ); + + /** + * @return the mean mass of the element + */ + double meanmass(); + + int x, y; //for the RegularPerodicTableView + + /** + * adjusts the units for the data. The user can + * for example define if Fahrenheit, Kelvin or + * Degrees Celsius should be used for the temperature. + * This method takes care of that and adjust the + * values. + * @param type the TYPE of the data + * @return the adjusted datastring + */ + const QString adjustUnits( const int type ); + + const QString adjustRadius( RADIUSTYPE rtype ); + + /** + * adjusts the units for the data. The user can + * for example define if Fahrenheit, Kelvin or + * Degrees Celsius should be used for the temperature. + * This method takes care of that and adjust the + * values. Depending on @p type a unit will be + * added to the adjusted value. + * @param type the TYPE of the data + * @param value the value of the data. + * @return the adjusted datastring + */ + const QString adjustUnits( const int type, double value ); + + /** + * types of datas + */ + enum TYPE + { + NOGRADIENT = 0, + ATOMICRADIUS, + COVALENTRADIUS, + VDWRADIUS, + MASS, + DENSITY, + BOILINGPOINT, + MELTINGPOINT, + EN, + EA, + DATE, + IE, + IONICRADIUS + }; + + QPoint pos() const; + QPoint coords() const; + + /** + * accessor for the element's color + */ + QColor elementColor() const { + return m_Color; + } + + void setupXY(); + + private: + /** + * the integer num represents the number of the element + */ + int m_ElementNumber; + + Spectrum *m_spectrum; + + bool m_hasSpectrum; + + QValueList<Isotope*> m_isotopeList; + + QValueList<double> m_spectrumList; + + QColor m_Color; + + int xPos() const; + int yPos() const; + + double m_mass, + m_MP, + m_BP, + m_EN, + m_EA, + m_Density, + m_RadiusAR, + m_RadiusCR, + m_RadiusVDW, + m_RadiusIon; + + + int m_number, + m_date, + m_biological, + m_period, + m_abundance; + + QString m_symbol, + m_name, + m_origin, + m_oxstage, + m_block, + m_group, + m_family, + m_acidbeh, + m_orbits, + m_isotopes, + m_scientist, + m_crystalstructure, + m_ionvalue; + + bool m_artificial, + m_radioactive; + + doubleList m_ionenergies; + + public: + /** + * draw the rectangle with the information + * @param p painter to do the drawing on + * @param value the value to display as text + * @param c the color used to paint the element + */ + virtual void drawGradient( QPainter* p, const QString& value, const QColor& c); + + /** + * Draw the Element grayed out. Used in the timeline + * @param p the painter used for the painting + */ + virtual void drawGrayedOut( QPainter* p ); + + /** + * draw the rectangle with the information + * @param p painter to do the drawing on + * @param simple if True more information will be shown + * @param isCrystal whether the elements should draw its crystal structure + */ + virtual void drawSelf( QPainter* p, bool simple = false, bool isCrystal = false ); + + virtual void drawStateOfMatter( QPainter* p, double temperature ); +}; + + +#endif diff --git a/kalzium/src/elementdataviewer.cpp b/kalzium/src/elementdataviewer.cpp new file mode 100644 index 00000000..6fe8a3e3 --- /dev/null +++ b/kalzium/src/elementdataviewer.cpp @@ -0,0 +1,352 @@ +/*************************************************************************** + copyright : (C) 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "elementdataviewer.h" +#include "element.h" +#include "plotsetupwidget.h" +#include "plotwidget.h" +#include "kalziumdataobject.h" + +#include <klocale.h> +#include <knuminput.h> +#include <kcombobox.h> +#include <kdebug.h> +#include <kactioncollection.h> +#include <kapplication.h> + +//QT-Includes +#include <qlayout.h> +#include <qcheckbox.h> +#include <qlabel.h> + +ElementDataViewer::ElementDataViewer( QWidget *parent, const char* name ) + : KDialogBase( KDialogBase::Plain, + i18n( "Plot Data") , + Help | User1 | Close, + User1, + parent, name ) +{ + d = KalziumDataObject::instance(); + + yData = new AxisData(); + + QHBoxLayout *layout = new QHBoxLayout(plainPage(), 0, KDialog::spacingHint() ); + + m_pPlotSetupWidget = new PlotSetupWidget( plainPage(), "plotsetup" ); + m_pPlotSetupWidget->from->setMaxValue( d->numberOfElements() - 1 ); + m_pPlotSetupWidget->to->setMaxValue( d->numberOfElements() ); + m_pPlotWidget = new PlotWidget( 0.0, 12.0 ,0.0 ,22.0, plainPage(), "plotwidget" ); + m_pPlotWidget->setYAxisLabel(" "); + m_pPlotWidget->setMinimumWidth( 200 ); + m_pPlotWidget->resize( 400, m_pPlotWidget->height() ); + + layout->addWidget( m_pPlotSetupWidget ); + layout->addWidget( m_pPlotWidget ); + layout->setStretchFactor( m_pPlotSetupWidget, 0 ); + layout->setStretchFactor( m_pPlotWidget, 1 ); + + // setup the list of names + EList::iterator it = d->ElementList.begin(); + const EList::iterator itEnd = d->ElementList.end(); + for( ; it != itEnd ; ++it ) + { + names.append( (*it)->elname() ); + } + + resize(500, 500); + + setButtonText( User1, i18n("&Plot") ); + + m_actionCollection = new KActionCollection(this); + KStdAction::quit(this, SLOT(slotClose()), m_actionCollection); + + connect ( m_pPlotSetupWidget->KCB_y, SIGNAL( activated(int) ), + this, SLOT( drawPlot()) ); + + connect ( m_pPlotSetupWidget->connectPoints, SIGNAL( toggled(bool) ), + this, SLOT( drawPlot()) ); + connect ( m_pPlotSetupWidget->showNames, SIGNAL( toggled(bool) ), + this, SLOT( drawPlot()) ); + + // Draw the plot so that the user doesn't have to press the "Plot" + // button to seee anything. + drawPlot(); +} + +void ElementDataViewer::slotHelp() +{ + emit helpClicked(); + if ( kapp ) + kapp->invokeHelp ( "plot_data", "kalzium" ); +} + +// Reimplement slotUser1 from KDialogBase + +void ElementDataViewer::slotUser1() +{ + kdDebug() << "slotUser1" << endl; + + drawPlot(); +} + + +void ElementDataViewer::setLimits(int f, int t) +{ + kdDebug() << "setLimits()" << endl; + + double minY = yData->value(f); + double maxY = yData->value(f); + + for ( int _currentVal = f; _currentVal <= t; _currentVal++ ) + { + double v = yData->value( _currentVal ); + + if( minY > v ) + minY = v; + if( maxY < v) + maxY = v; + } + + // try to put a small padding to make the points on the axis visible + double dx = ( t - f + 1 ) / 25 + 1.0; + double dy = ( maxY - minY ) / 10.0; + // in case that dy is quite small (for example, when plotting a single + // point) + if ( dy < 1e-7 ) + dy = maxY / 10.0; + m_pPlotWidget->setLimits( f - dx, t + dx, minY - dy, maxY + dy ); +} + +void ElementDataViewer::paintEvent(QPaintEvent*) +{ + m_pPlotWidget->update(); +} + +void ElementDataViewer::keyPressEvent(QKeyEvent *e) +{ + switch ( e->key() ) + { + case Key_Plus: + case Key_Equal: + slotZoomIn(); + break; + case Key_Minus: + case Key_Underscore: + slotZoomOut(); + break; + case Key_Escape: + close(); + break; + } +} + +void ElementDataViewer::slotZoomIn(){} +void ElementDataViewer::slotZoomOut(){} + +void ElementDataViewer::setupAxisData() +{ + DoubleList l; + + const int selectedData = m_pPlotSetupWidget->KCB_y->currentItem(); + + //this should be somewhere else, eg in its own method + yData->m_currentDataType = selectedData; + + EList::iterator it = d->ElementList.begin(); + const EList::iterator itEnd = d->ElementList.end(); + switch(selectedData) + { + case AxisData::MASS: + for( ; it != itEnd ; ++it ) { + double value = (*it)->mass(); + if( value > 0.0 ) + l.append( value ); + else + l.append( 0.0 ); + } + m_pPlotWidget->setYAxisLabel(i18n("Atomic Mass [u]")); + break; + case AxisData::MEANWEIGHT: + for( ; it != itEnd ; ++it ) { + double value =(*it)->meanmass(); + if( value > 0.0 ) + l.append( value ); + else + l.append( 0.0 ); + } + m_pPlotWidget->setYAxisLabel(i18n("Mean Mass [u]")); + break; + case AxisData::DENSITY: + for( ; it != itEnd ; ++it ) { + double value =(*it)->density(); + if( value > 0.0 ) + l.append( value ); + else + l.append( 0.0 ); + } + m_pPlotWidget->setYAxisLabel(i18n("Density")); + break; + case AxisData::EN: + for( ; it != itEnd ; ++it ) { + double value = (*it)->electroneg(); + if( value > 0.0 ) + l.append( value ); + else + l.append( 0.0 ); + } + m_pPlotWidget->setYAxisLabel(i18n("Electronegativity")); + break; + case AxisData::MELTINGPOINT: + for( ; it != itEnd ; ++it ) { + double value = (*it)->melting(); + if( value > 0.0 ) + l.append( value ); + else + l.append( 0.0 ); + } + m_pPlotWidget->setYAxisLabel(i18n("Melting Point [K]")); + break; + case AxisData::BOILINGPOINT: + for( ; it != itEnd ; ++it ) { + double value = (*it)->boiling(); + if( value > 0.0 ) + l.append( value ); + else + l.append( 0.0 ); + } + m_pPlotWidget->setYAxisLabel(i18n("Boiling Point [K]")); + break; + case AxisData::ATOMICRADIUS: + for( ; it != itEnd ; ++it ) { + double value = (*it)->radius( Element::ATOMIC ); + if( value > 0.0 ) + l.append( value ); + else + l.append( 0.0 ); + } + m_pPlotWidget->setYAxisLabel(i18n("Atomic Radius [pm]")); + break; + case AxisData::COVALENTRADIUS: + for( ; it != itEnd ; ++it ) { + double value = (*it)->radius( Element::COVALENT ); + if( value > 0.0 ) + l.append( value ); + else + l.append( 0.0 ); + } + m_pPlotWidget->setYAxisLabel(i18n("Covalent Radius [pm]")); + break; + } + + yData->setDataList( l ); +} + +void ElementDataViewer::drawPlot() +{ + kdDebug() << "drawPlot()" << endl; + + /* + * to be 100% safe delete the old list + */ + m_pPlotWidget->clearObjectList(); + + /* + * spare the next step in case everything is already set and done + */ + if( yData->currentDataType() != m_pPlotSetupWidget->KCB_y->currentItem() ) + initData(); + + /* + * if the user selected the elements 20 to 30 the list-values are 19 to 29!!! + */ + const int from = m_pPlotSetupWidget->from->value(); + const int to = m_pPlotSetupWidget->to->value(); + + /* + * The number of elements. #20 to 30 are 30-20+1=11 Elements + */ + const int num = to-from+1; + + setLimits(from,to); + + /* + * check if the users wants to see the elementnames or not + */ + bool showNames = m_pPlotSetupWidget->showNames->isChecked(); + bool connectPoints = m_pPlotSetupWidget->connectPoints->isChecked(); + + if ( connectPoints ) + m_pPlotWidget->setConnection( true ); + else + m_pPlotWidget->setConnection( false ); + + /* + * reserve the memory for the KPlotObjects + */ + //TODO QT4 replace QMemArray with QVector + QMemArray<KPlotObject*> dataPoint(num); + QMemArray<KPlotObject*> dataPointLabel(num); + + int number = 0; + + double max = 0.0, av = 0.0; + double min = yData->value( 1 ); + + /* + * iterate for example from element 20 to 30 and contruct + * the KPlotObjects + */ + for( int i = from; i < to+1 ; i++ ) + { + double v = yData->value( i ); + + if ( v >= 0.0 ) + { + if ( v < min ) + min = v; + if ( v > max ) + max = v; + av += v; + + dataPoint[number] = new KPlotObject( "whocares", "Blue", KPlotObject::POINTS, 4, KPlotObject::CIRCLE ); + dataPoint[number]->addPoint( new DPoint( (double)i , v ) ); + m_pPlotWidget->addObject( dataPoint[ number ] ); + + if (showNames) + { + dataPointLabel[number] = new KPlotObject( *(names.at(i-1)), "Red", KPlotObject::LABEL ); + dataPointLabel[number]->addPoint( new DPoint( (double)i , yData->value( i ) ) ); + m_pPlotWidget->addObject( dataPointLabel[number] ); + } + } + number++; + } + + //now set the values for the min, max and avarage value + m_pPlotSetupWidget->aValue->setText( QString::number( av/number ) ); + m_pPlotSetupWidget->minValue->setText( QString::number( min ) ); + m_pPlotSetupWidget->maxValue->setText( QString::number( max ) ); +} + +void ElementDataViewer::initData() +{ + setupAxisData(); +} + +/////////////////////////////////////////////// + +AxisData::AxisData() +{} + +#include "elementdataviewer.moc" diff --git a/kalzium/src/elementdataviewer.h b/kalzium/src/elementdataviewer.h new file mode 100644 index 00000000..4414377c --- /dev/null +++ b/kalzium/src/elementdataviewer.h @@ -0,0 +1,147 @@ +#ifndef ELEMENTDATAVIEWER_H +#define ELEMENTDATAVIEWER_H +/*************************************************************************** + copyright : (C) 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include <kdialogbase.h> + +typedef QValueList<double> DoubleList; + +class Element; +class KalziumDataObject; +class PlotSetupWidget; +class PlotWidget; +class KActionCollection; + +/** + * @short the values of the y-Axis + * @author Carsten Niehaus + */ +class AxisData +{ + friend class ElementDataViewer; + + public: + AxisData(); + + /** + * sets the dataList to @p list + */ + void setDataList( DoubleList list ){ + dataList = list; + } + + /** + * @return the value of the selected dataset of element @p element + */ + double value( int element ){ + return *dataList.at( element-1 ); + } + + /** + * This represents the possible datasets. + * @li MASS: the mass of the element + * @li MELTINGPOINT: the meanmass of the element + */ + enum PAXISDATA{ + MASS=0, + MEANWEIGHT, + DENSITY, + EN, + MELTINGPOINT, + BOILINGPOINT, + ATOMICRADIUS, + COVALENTRADIUS + }; + + /** + * @return the currently selected data type + * @see AxisData::PAXISDATA + */ + int currentDataType(){ + return m_currentDataType; + } + + int numberOfElements() const{ + return dataList.count(); + } + + private: + /** + * the dataList contains the values off all elements + * but only of the currently selected data type. This + * means that it eg contains all boiling points + */ + DoubleList dataList; + + int m_currentDataType; +}; + +/** + * @short This widget shows the plot and the widget + * where you can setup the plot + * @author Carsten Niehaus + */ +class ElementDataViewer : public KDialogBase +{ + Q_OBJECT + + public: + ElementDataViewer( QWidget *parent=0 , const char *name =0 ); + + /** + * the AxixData for the y-Axis + */ + AxisData *yData; + + public slots: + void slotZoomIn(); + void slotZoomOut(); + + /** + * draws the plot + */ + void drawPlot(); + + void slotUser1(); + + protected: + virtual void paintEvent(QPaintEvent*); + virtual void keyPressEvent(QKeyEvent *e); + + protected slots: + /** + * invoke the help of the correct chapter + */ + virtual void slotHelp(); + + private: + PlotWidget *m_pPlotWidget; + PlotSetupWidget *m_pPlotSetupWidget; + + KalziumDataObject *d; + + QStringList names; + + KActionCollection* m_actionCollection; + + void initData(); + void setupAxisData(); + + void setLimits(int, int); + +}; + +#endif // ELEMENTDATAVIEWER_H + diff --git a/kalzium/src/elementpics/Al.jpg b/kalzium/src/elementpics/Al.jpg Binary files differnew file mode 100644 index 00000000..5937304c --- /dev/null +++ b/kalzium/src/elementpics/Al.jpg diff --git a/kalzium/src/elementpics/As.jpg b/kalzium/src/elementpics/As.jpg Binary files differnew file mode 100644 index 00000000..56705664 --- /dev/null +++ b/kalzium/src/elementpics/As.jpg diff --git a/kalzium/src/elementpics/Au.jpg b/kalzium/src/elementpics/Au.jpg Binary files differnew file mode 100644 index 00000000..3c066c25 --- /dev/null +++ b/kalzium/src/elementpics/Au.jpg diff --git a/kalzium/src/elementpics/B.jpg b/kalzium/src/elementpics/B.jpg Binary files differnew file mode 100644 index 00000000..562122cc --- /dev/null +++ b/kalzium/src/elementpics/B.jpg diff --git a/kalzium/src/elementpics/Be.jpg b/kalzium/src/elementpics/Be.jpg Binary files differnew file mode 100644 index 00000000..f7d8fb1e --- /dev/null +++ b/kalzium/src/elementpics/Be.jpg diff --git a/kalzium/src/elementpics/Bi.jpg b/kalzium/src/elementpics/Bi.jpg Binary files differnew file mode 100644 index 00000000..950f092f --- /dev/null +++ b/kalzium/src/elementpics/Bi.jpg diff --git a/kalzium/src/elementpics/Br.jpg b/kalzium/src/elementpics/Br.jpg Binary files differnew file mode 100644 index 00000000..69471528 --- /dev/null +++ b/kalzium/src/elementpics/Br.jpg diff --git a/kalzium/src/elementpics/C.jpg b/kalzium/src/elementpics/C.jpg Binary files differnew file mode 100644 index 00000000..58f237a3 --- /dev/null +++ b/kalzium/src/elementpics/C.jpg diff --git a/kalzium/src/elementpics/Ca.jpg b/kalzium/src/elementpics/Ca.jpg Binary files differnew file mode 100644 index 00000000..2278505d --- /dev/null +++ b/kalzium/src/elementpics/Ca.jpg diff --git a/kalzium/src/elementpics/Cd.jpg b/kalzium/src/elementpics/Cd.jpg Binary files differnew file mode 100644 index 00000000..b62212de --- /dev/null +++ b/kalzium/src/elementpics/Cd.jpg diff --git a/kalzium/src/elementpics/Cl.jpg b/kalzium/src/elementpics/Cl.jpg Binary files differnew file mode 100644 index 00000000..0ec815d4 --- /dev/null +++ b/kalzium/src/elementpics/Cl.jpg diff --git a/kalzium/src/elementpics/Co.jpg b/kalzium/src/elementpics/Co.jpg Binary files differnew file mode 100644 index 00000000..906cc778 --- /dev/null +++ b/kalzium/src/elementpics/Co.jpg diff --git a/kalzium/src/elementpics/Cr.jpg b/kalzium/src/elementpics/Cr.jpg Binary files differnew file mode 100644 index 00000000..ffcc9a1b --- /dev/null +++ b/kalzium/src/elementpics/Cr.jpg diff --git a/kalzium/src/elementpics/Cu.jpg b/kalzium/src/elementpics/Cu.jpg Binary files differnew file mode 100644 index 00000000..c45df8d7 --- /dev/null +++ b/kalzium/src/elementpics/Cu.jpg diff --git a/kalzium/src/elementpics/F.jpg b/kalzium/src/elementpics/F.jpg Binary files differnew file mode 100644 index 00000000..dfcd8cdd --- /dev/null +++ b/kalzium/src/elementpics/F.jpg diff --git a/kalzium/src/elementpics/Fe.jpg b/kalzium/src/elementpics/Fe.jpg Binary files differnew file mode 100644 index 00000000..6c8969b8 --- /dev/null +++ b/kalzium/src/elementpics/Fe.jpg diff --git a/kalzium/src/elementpics/Ga.jpg b/kalzium/src/elementpics/Ga.jpg Binary files differnew file mode 100644 index 00000000..a829673f --- /dev/null +++ b/kalzium/src/elementpics/Ga.jpg diff --git a/kalzium/src/elementpics/Ge.jpg b/kalzium/src/elementpics/Ge.jpg Binary files differnew file mode 100644 index 00000000..42c006b0 --- /dev/null +++ b/kalzium/src/elementpics/Ge.jpg diff --git a/kalzium/src/elementpics/H.jpg b/kalzium/src/elementpics/H.jpg Binary files differnew file mode 100644 index 00000000..ab879efc --- /dev/null +++ b/kalzium/src/elementpics/H.jpg diff --git a/kalzium/src/elementpics/He.jpg b/kalzium/src/elementpics/He.jpg Binary files differnew file mode 100644 index 00000000..71c1a311 --- /dev/null +++ b/kalzium/src/elementpics/He.jpg diff --git a/kalzium/src/elementpics/Hg.jpg b/kalzium/src/elementpics/Hg.jpg Binary files differnew file mode 100644 index 00000000..b5051c8f --- /dev/null +++ b/kalzium/src/elementpics/Hg.jpg diff --git a/kalzium/src/elementpics/I.jpg b/kalzium/src/elementpics/I.jpg Binary files differnew file mode 100644 index 00000000..ecacd84a --- /dev/null +++ b/kalzium/src/elementpics/I.jpg diff --git a/kalzium/src/elementpics/In.jpg b/kalzium/src/elementpics/In.jpg Binary files differnew file mode 100644 index 00000000..224454a1 --- /dev/null +++ b/kalzium/src/elementpics/In.jpg diff --git a/kalzium/src/elementpics/K.jpg b/kalzium/src/elementpics/K.jpg Binary files differnew file mode 100644 index 00000000..b9291c3f --- /dev/null +++ b/kalzium/src/elementpics/K.jpg diff --git a/kalzium/src/elementpics/Kr.jpg b/kalzium/src/elementpics/Kr.jpg Binary files differnew file mode 100644 index 00000000..317ff190 --- /dev/null +++ b/kalzium/src/elementpics/Kr.jpg diff --git a/kalzium/src/elementpics/Li.jpg b/kalzium/src/elementpics/Li.jpg Binary files differnew file mode 100644 index 00000000..e2d54208 --- /dev/null +++ b/kalzium/src/elementpics/Li.jpg diff --git a/kalzium/src/elementpics/Makefile.am b/kalzium/src/elementpics/Makefile.am new file mode 100644 index 00000000..ede0d0af --- /dev/null +++ b/kalzium/src/elementpics/Makefile.am @@ -0,0 +1,3 @@ +elempic_DATA = Al.jpg Be.jpg Br.jpg Ca.jpg Cl.jpg Co.jpg Fe.jpg Ge.jpg H.jpg Kr.jpg Mn.jpg Nb.jpg N.jpg Pd.jpg Re.jpg Se.jpg Sn.jpg Th.jpg V.jpg Zn.jpg As.jpg Bi.jpg Cd.jpg Cr.jpg F.jpg He.jpg In.jpg I.jpg Li.jpg Mo.jpg Ne.jpg O.jpg P.jpg Rh.jpg Si.jpg Ta.jpg Ti.jpg W.jpg Zr.jpg Au.jpg B.jpg C.jpg Cu.jpg Ga.jpg Hg.jpg K.jpg Mg.jpg Na.jpg Ni.jpg Pb.jpg Pt.jpg Sb.jpg S.jpg Te.jpg U.jpg Xe.jpg +elempicdir = $(kde_datadir)/kalzium/elempics + diff --git a/kalzium/src/elementpics/Mg.jpg b/kalzium/src/elementpics/Mg.jpg Binary files differnew file mode 100644 index 00000000..54974861 --- /dev/null +++ b/kalzium/src/elementpics/Mg.jpg diff --git a/kalzium/src/elementpics/Mn.jpg b/kalzium/src/elementpics/Mn.jpg Binary files differnew file mode 100644 index 00000000..5736d07b --- /dev/null +++ b/kalzium/src/elementpics/Mn.jpg diff --git a/kalzium/src/elementpics/Mo.jpg b/kalzium/src/elementpics/Mo.jpg Binary files differnew file mode 100644 index 00000000..e21f786c --- /dev/null +++ b/kalzium/src/elementpics/Mo.jpg diff --git a/kalzium/src/elementpics/N.jpg b/kalzium/src/elementpics/N.jpg Binary files differnew file mode 100644 index 00000000..6b8ed8fa --- /dev/null +++ b/kalzium/src/elementpics/N.jpg diff --git a/kalzium/src/elementpics/Na.jpg b/kalzium/src/elementpics/Na.jpg Binary files differnew file mode 100644 index 00000000..c3f7556f --- /dev/null +++ b/kalzium/src/elementpics/Na.jpg diff --git a/kalzium/src/elementpics/Nb.jpg b/kalzium/src/elementpics/Nb.jpg Binary files differnew file mode 100644 index 00000000..f2f61093 --- /dev/null +++ b/kalzium/src/elementpics/Nb.jpg diff --git a/kalzium/src/elementpics/Ne.jpg b/kalzium/src/elementpics/Ne.jpg Binary files differnew file mode 100644 index 00000000..ef16d8a7 --- /dev/null +++ b/kalzium/src/elementpics/Ne.jpg diff --git a/kalzium/src/elementpics/Ni.jpg b/kalzium/src/elementpics/Ni.jpg Binary files differnew file mode 100644 index 00000000..dcc23d55 --- /dev/null +++ b/kalzium/src/elementpics/Ni.jpg diff --git a/kalzium/src/elementpics/O.jpg b/kalzium/src/elementpics/O.jpg Binary files differnew file mode 100644 index 00000000..308e6272 --- /dev/null +++ b/kalzium/src/elementpics/O.jpg diff --git a/kalzium/src/elementpics/P.jpg b/kalzium/src/elementpics/P.jpg Binary files differnew file mode 100644 index 00000000..51333f7c --- /dev/null +++ b/kalzium/src/elementpics/P.jpg diff --git a/kalzium/src/elementpics/Pb.jpg b/kalzium/src/elementpics/Pb.jpg Binary files differnew file mode 100644 index 00000000..c42604f7 --- /dev/null +++ b/kalzium/src/elementpics/Pb.jpg diff --git a/kalzium/src/elementpics/Pd.jpg b/kalzium/src/elementpics/Pd.jpg Binary files differnew file mode 100644 index 00000000..607ec7d7 --- /dev/null +++ b/kalzium/src/elementpics/Pd.jpg diff --git a/kalzium/src/elementpics/Pt.jpg b/kalzium/src/elementpics/Pt.jpg Binary files differnew file mode 100644 index 00000000..2d16eaea --- /dev/null +++ b/kalzium/src/elementpics/Pt.jpg diff --git a/kalzium/src/elementpics/Re.jpg b/kalzium/src/elementpics/Re.jpg Binary files differnew file mode 100644 index 00000000..6ac696a7 --- /dev/null +++ b/kalzium/src/elementpics/Re.jpg diff --git a/kalzium/src/elementpics/Rh.jpg b/kalzium/src/elementpics/Rh.jpg Binary files differnew file mode 100644 index 00000000..b6cd3e22 --- /dev/null +++ b/kalzium/src/elementpics/Rh.jpg diff --git a/kalzium/src/elementpics/S.jpg b/kalzium/src/elementpics/S.jpg Binary files differnew file mode 100644 index 00000000..385fb1fc --- /dev/null +++ b/kalzium/src/elementpics/S.jpg diff --git a/kalzium/src/elementpics/Sb.jpg b/kalzium/src/elementpics/Sb.jpg Binary files differnew file mode 100644 index 00000000..fee1fe81 --- /dev/null +++ b/kalzium/src/elementpics/Sb.jpg diff --git a/kalzium/src/elementpics/Se.jpg b/kalzium/src/elementpics/Se.jpg Binary files differnew file mode 100644 index 00000000..8c27b652 --- /dev/null +++ b/kalzium/src/elementpics/Se.jpg diff --git a/kalzium/src/elementpics/Si.jpg b/kalzium/src/elementpics/Si.jpg Binary files differnew file mode 100644 index 00000000..e7aad9fa --- /dev/null +++ b/kalzium/src/elementpics/Si.jpg diff --git a/kalzium/src/elementpics/Sn.jpg b/kalzium/src/elementpics/Sn.jpg Binary files differnew file mode 100644 index 00000000..608c5b6a --- /dev/null +++ b/kalzium/src/elementpics/Sn.jpg diff --git a/kalzium/src/elementpics/Ta.jpg b/kalzium/src/elementpics/Ta.jpg Binary files differnew file mode 100644 index 00000000..aec4e4c8 --- /dev/null +++ b/kalzium/src/elementpics/Ta.jpg diff --git a/kalzium/src/elementpics/Te.jpg b/kalzium/src/elementpics/Te.jpg Binary files differnew file mode 100644 index 00000000..1a00465a --- /dev/null +++ b/kalzium/src/elementpics/Te.jpg diff --git a/kalzium/src/elementpics/Th.jpg b/kalzium/src/elementpics/Th.jpg Binary files differnew file mode 100644 index 00000000..0e4b7228 --- /dev/null +++ b/kalzium/src/elementpics/Th.jpg diff --git a/kalzium/src/elementpics/Ti.jpg b/kalzium/src/elementpics/Ti.jpg Binary files differnew file mode 100644 index 00000000..65781f79 --- /dev/null +++ b/kalzium/src/elementpics/Ti.jpg diff --git a/kalzium/src/elementpics/U.jpg b/kalzium/src/elementpics/U.jpg Binary files differnew file mode 100644 index 00000000..8f0246b3 --- /dev/null +++ b/kalzium/src/elementpics/U.jpg diff --git a/kalzium/src/elementpics/V.jpg b/kalzium/src/elementpics/V.jpg Binary files differnew file mode 100644 index 00000000..f5723643 --- /dev/null +++ b/kalzium/src/elementpics/V.jpg diff --git a/kalzium/src/elementpics/W.jpg b/kalzium/src/elementpics/W.jpg Binary files differnew file mode 100644 index 00000000..78d554d3 --- /dev/null +++ b/kalzium/src/elementpics/W.jpg diff --git a/kalzium/src/elementpics/Xe.jpg b/kalzium/src/elementpics/Xe.jpg Binary files differnew file mode 100644 index 00000000..0c716194 --- /dev/null +++ b/kalzium/src/elementpics/Xe.jpg diff --git a/kalzium/src/elementpics/Zn.jpg b/kalzium/src/elementpics/Zn.jpg Binary files differnew file mode 100644 index 00000000..d11dea36 --- /dev/null +++ b/kalzium/src/elementpics/Zn.jpg diff --git a/kalzium/src/elementpics/Zr.jpg b/kalzium/src/elementpics/Zr.jpg Binary files differnew file mode 100644 index 00000000..cb0bf7e9 --- /dev/null +++ b/kalzium/src/elementpics/Zr.jpg diff --git a/kalzium/src/eqchemview.cpp b/kalzium/src/eqchemview.cpp new file mode 100644 index 00000000..6b5a9476 --- /dev/null +++ b/kalzium/src/eqchemview.cpp @@ -0,0 +1,121 @@ +/*************************************************************************** + * Copyright (C) 2004, 2005 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <qlayout.h> +#include <qlabel.h> +#include <qstring.h> + +#include <kdebug.h> +#include <klocale.h> +#include <klineedit.h> +#include <kpushbutton.h> +#include <kiconloader.h> +#include <kglobal.h> +#include <kapplication.h> + +#include "config.h" +#include "eqresult.h" +#include "eqchemview.h" + +#include <stdlib.h> + +#ifdef HAVE_FACILE +extern "C" { + char* solve_equation(const char *); +} +#endif + +#ifndef HAVE_FACILE +char* solve_equation(const char *) { return NULL; } +#endif + +eqchemView::eqchemView(QWidget *parent) : QWidget(parent) +{ + settingsChanged(); + + QGridLayout *l = new QGridLayout(this, 2, 2, 11, 6, "eqchemView::eqchemView layout"); + + m_eqResult = new EqResult(this); + m_eqedit = new KLineEdit(this); + m_eqclear = new KPushButton(this); + + l->addMultiCellWidget(m_eqResult, 0, 0, 0, 1); + l->addWidget(m_eqedit, 1, 1); + l->addWidget(m_eqclear, 1, 0); + + m_eqclear->setIconSet( KGlobal::instance()->iconLoader()->loadIconSet("locationbar_erase", + KIcon::NoGroup, 22 /*KIcon::SizeSmallMedium*/) ); + + connect(m_eqclear, SIGNAL(clicked()), m_eqedit, SLOT(clear()) ); +} + +eqchemView::~eqchemView() +{ + +} + +void eqchemView::settingsChanged() +{ + // i18n : internationalization + emit signalChangeStatusbar( i18n("Settings changed") ); +} + + +void eqchemView::clear() +{ + kdWarning()<<"eqchemView::clear"<<endl; + + // clear the result window + m_eqResult->clear(); +} + +void eqchemView::compute() +{ + QString equation( m_eqedit->text() ); + equation.replace("+", "+"); + equation.replace("->", " -> "); + equation.append(" "); + equation.prepend(" "); + + char * result = solve_equation( equation.latin1() ); + QString disp = QString(result); + + // mem leak ? + free(result); + + // add the equation in the result window + m_eqResult->add( equation, disp ); +} + +EQChemDialog::EQChemDialog( QWidget *parent ) + : KDialogBase(parent, "EQChemDialog", true, i18n( "Solve Chemical Equations" ), + KDialogBase::Apply|KDialogBase::Close|KDialogBase::Help, KDialogBase::Apply, true ) +{ +} + +void EQChemDialog::slotHelp() +{ + emit helpClicked(); + if ( kapp ) + kapp->invokeHelp ( "eq_solver", "kalzium" ); +} + +#include "eqchemview.moc" + diff --git a/kalzium/src/eqchemview.h b/kalzium/src/eqchemview.h new file mode 100644 index 00000000..4e381fc2 --- /dev/null +++ b/kalzium/src/eqchemview.h @@ -0,0 +1,104 @@ +/*************************************************************************** + * Copyright (C) 2004, 2005 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _EQCHEMVIEW_H_ +#define _EQCHEMVIEW_H_ + +#include <qwidget.h> +#include <kdialogbase.h> + +class QPainter; +class KURL; +class EqResult; + +class KLineEdit; +class KPushButton; + +/** + * This is the main view class for eqchem. Most of the non-menu, + * non-toolbar, and non-statusbar (e.g., non frame) GUI code should go + * here. + * + * @short Main view + * @author Thomas Nagy <tnagy2^8\@yahoo.fr> + * @version 0.1 + */ +class eqchemView : public QWidget +{ + Q_OBJECT +public: + /** + * Default constructor + */ + eqchemView(QWidget *parent); + + /** + * Destructor + */ + virtual ~eqchemView(); + +signals: + /** + * Use this signal to change the content of the statusbar + */ + void signalChangeStatusbar(const QString& text); + + /** + * Use this signal to change the content of the caption + */ + void signalChangeCaption(const QString& text); + +public slots: + void clear(); + void compute(); + + +private slots: + void settingsChanged(); + +private: + KLineEdit * m_eqedit; + KPushButton * m_eqclear; + EqResult * m_eqResult; +}; + +/** + * @author Carsten Niehaus + */ +class EQChemDialog : public KDialogBase +{ + Q_OBJECT + + public: + /** + * public constructor + * + * @param parent the parent widget + */ + EQChemDialog( QWidget *parent ); + + private slots: + /** + * invokes the help for this widget + */ + void slotHelp(); +}; + +#endif // _EQCHEMVIEW_H_ diff --git a/kalzium/src/eqresult.cpp b/kalzium/src/eqresult.cpp new file mode 100644 index 00000000..a1ebf555 --- /dev/null +++ b/kalzium/src/eqresult.cpp @@ -0,0 +1,128 @@ +/*************************************************************************** + * Copyright (C) 2004, 2005 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <qtimer.h> +#include <qpainter.h> +#include <qcolor.h> + +#include <kdebug.h> + +#include "eqresult.h" + +// inspired by speedcrunch + +QuestionItem::QuestionItem( QListBox* listBox, const QString& e, QColor bg ): +QListBoxItem ( listBox ) +{ + m_msg = e; + m_bgcolor = bg; +} + +AnswerItem::AnswerItem( QListBox* listBox, const QString& e, const QString &r, QColor bg ): +QListBoxItem ( listBox ) +{ + m_msg = "<p align=\"right\">"+r+"</p>"; + m_origmsg = e; + m_bgcolor = bg; + m_richtext = new QSimpleRichText(m_msg, listBox->font()); + m_richtext->setWidth( listBox->width() ); +} + +void QuestionItem::paint( QPainter* painter ) +{ + int tf = Qt::NoAccel | Qt::SingleLine | Qt::AlignVCenter; + + QRect r ( 0, 0, listBox()->contentsWidth(), height( listBox() ) ); + painter->fillRect( r, m_bgcolor ); + painter->drawText( r, tf, m_msg ); +} + +void AnswerItem::paint( QPainter* painter ) +{ + checkSize(); + + QRect r ( 0, 0, listBox()->contentsWidth(), height( listBox() ) ); + painter->fillRect( r, m_bgcolor ); + + QColorGroup cg = listBox()->colorGroup(); + cg.setColor( QColorGroup::Background, m_bgcolor ); + + m_richtext->draw(painter, 0, 0, r, cg ); +} + +int QuestionItem::width( const QListBox*lb ) const +{ + QFont font = lb->font(); + return QFontMetrics( font ).width( m_msg ); +} + +int QuestionItem::height( const QListBox*lb ) const +{ + QFont font = lb->font(); + return QFontMetrics( font ).height() + 4; +} + +void AnswerItem::checkSize() +{ + QFont font = listBox()->font(); + int t1 = QFontMetrics( font ).width( m_origmsg+"padding" ); + int t2 = listBox()->width() - 20; + + // take the maximum + m_richtext->setWidth( (t1>t2)?t1:t2 ); +} + +EqResult::EqResult(QWidget *parent) : QListBox(parent) +{ + m_alternate_color = false; + setMinimumWidth(140); +} + +EqResult::~EqResult() +{ +} + +void EqResult::add(const QString & question, const QString & answer) +{ + QColor bgcolor = colorGroup().base(); + + if ( m_alternate_color ) + bgcolor = bgcolor.dark( 120 ); + + m_alternate_color = !m_alternate_color; + + new QuestionItem( this, question, bgcolor ); + new AnswerItem( this, question, answer, bgcolor ); + + QTimer::singleShot( 100, this, SLOT( scrollToEnd() ) ); +} + +void EqResult::scrollToEnd() +{ + ensureVisible( 0, contentsHeight()-1 ); +} + +void EqResult::resizeEvent( QResizeEvent* ) +{ + triggerUpdate( true ); +} + +#include "eqresult.moc" + diff --git a/kalzium/src/eqresult.h b/kalzium/src/eqresult.h new file mode 100644 index 00000000..7b229cde --- /dev/null +++ b/kalzium/src/eqresult.h @@ -0,0 +1,90 @@ +/*************************************************************************** + * Copyright (C) 2004, 2005 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef _EQRESULT_H_ +#define _EQRESULT_H_ + +#include <qlistbox.h> +#include <qsimplerichtext.h> + +/** + * @author Thomas Nagy + */ +class QuestionItem : public QListBoxItem +{ + public: + QuestionItem( QListBox*, const QString&, QColor bg ); + protected: + void paint( QPainter* p ); + int width( const QListBox* ) const; + int height( const QListBox* ) const; + private: + QString m_msg; + QColor m_bgcolor; +}; + +/** + * @author Thomas Nagy + */ +class AnswerItem : public QListBoxItem +{ + public: + AnswerItem( QListBox*, const QString&, const QString&, QColor bg ); + ~AnswerItem() { delete m_richtext; } + void checkSize(); + protected: + void paint( QPainter* p ); + int width( const QListBox* ) const{ + return m_richtext->height(); + } + + int height( const QListBox* ) const{ + return m_richtext->height(); + } + + private: + QString m_msg; + QString m_origmsg; + QColor m_bgcolor; + QSimpleRichText * m_richtext; +}; + +/** + * @author Thomas Nagy + */ +class EqResult : public QListBox +{ + Q_OBJECT +public: + + EqResult(QWidget *parent); + ~EqResult(); + +public slots: + void add(const QString &, const QString &); + void scrollToEnd(); + void resizeEvent( QResizeEvent* ); + +private: + bool m_alternate_color; +}; + +#endif // _EQRESULT_H_ + diff --git a/kalzium/src/exporter.cpp b/kalzium/src/exporter.cpp new file mode 100644 index 00000000..48f50170 --- /dev/null +++ b/kalzium/src/exporter.cpp @@ -0,0 +1,62 @@ +/* Copyright (C) 2005 by Martin Pfeiffer * + * hubipete@gmx.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "exporter.h" + +#include <qpixmap.h> + +#include <kdebug.h> +#include <kimageio.h> + +Exporter::Exporter() +{ + static bool kimageioRegistered = false; + if ( ! kimageioRegistered ) + { + KImageIO::registerFormats(); + kimageioRegistered = true; + } + +} + +Exporter::~Exporter() +{ +} + +bool Exporter::saveAsImage( const QPixmap* pixmap, const QString& fileName, int x, int y, int width, int height ) +{ + if ( x != 0 || y != 0 || width != 0 || height != 0 ) + { + QPixmap* tmpPixmap = new QPixmap(); + + copyBlt( tmpPixmap, 0, 0, pixmap, x, y, width, height ); + + if ( tmpPixmap->isNull() ) + kdDebug() << "empty pixmap" << endl; + return tmpPixmap->save( fileName, "PNG" ); + } + + return pixmap->save( fileName, "PNG" ); +} + +QString Exporter::supportedImageFormats() +{ + return KImageIO::pattern( KImageIO::Writing ); +} + diff --git a/kalzium/src/exporter.h b/kalzium/src/exporter.h new file mode 100644 index 00000000..c780a394 --- /dev/null +++ b/kalzium/src/exporter.h @@ -0,0 +1,54 @@ +#ifndef EXPORTER_H +#define EXPORTER_H + +/*************************************************************************** + + The header for the exporter class of Kalzium + ------------------- + begin : June 2005 + copyright : (C) 2005 by Martin Pfeiffer + email : hubipete@gmx.net + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +class QPixmap; +class QString; + +/** + * Small class that provides some exporting functions for graphics. + * + * @author Martin Pfeiffer + */ +class Exporter +{ +public: + Exporter(); + ~Exporter(); + + /** + * Export the image @p pixmap to the file @p fileName. + * If specified, @p x, @p y, @p width and @p height gives the region of + * @p pixmap we should export. Otherwise, the entire @p pixmap will be + * exported. + * @return whether the image was saved successfully + */ + bool saveAsImage( const QPixmap* pixmap, const QString& fileName, int x = 0, int y = 0, int width = 0, int height = 0 ); + + /** + * Which image type can we export to? + * @return a string representing a filter string for file dialogs with + * the image type we can export to + */ + QString supportedImageFormats(); +}; + +#endif + diff --git a/kalzium/src/hi128-app-kalzium.png b/kalzium/src/hi128-app-kalzium.png Binary files differnew file mode 100644 index 00000000..d48e0d86 --- /dev/null +++ b/kalzium/src/hi128-app-kalzium.png diff --git a/kalzium/src/hi16-app-kalzium.png b/kalzium/src/hi16-app-kalzium.png Binary files differnew file mode 100644 index 00000000..418badba --- /dev/null +++ b/kalzium/src/hi16-app-kalzium.png diff --git a/kalzium/src/hi22-app-kalzium.png b/kalzium/src/hi22-app-kalzium.png Binary files differnew file mode 100644 index 00000000..b686ab9c --- /dev/null +++ b/kalzium/src/hi22-app-kalzium.png diff --git a/kalzium/src/hi32-app-kalzium.png b/kalzium/src/hi32-app-kalzium.png Binary files differnew file mode 100644 index 00000000..1aabbbb6 --- /dev/null +++ b/kalzium/src/hi32-app-kalzium.png diff --git a/kalzium/src/hi48-app-kalzium.png b/kalzium/src/hi48-app-kalzium.png Binary files differnew file mode 100644 index 00000000..292766ac --- /dev/null +++ b/kalzium/src/hi48-app-kalzium.png diff --git a/kalzium/src/hi64-app-kalzium.png b/kalzium/src/hi64-app-kalzium.png Binary files differnew file mode 100644 index 00000000..6c4059be --- /dev/null +++ b/kalzium/src/hi64-app-kalzium.png diff --git a/kalzium/src/hisc-app-kalzium.svgz b/kalzium/src/hisc-app-kalzium.svgz Binary files differnew file mode 100644 index 00000000..f814bd18 --- /dev/null +++ b/kalzium/src/hisc-app-kalzium.svgz diff --git a/kalzium/src/icons/Makefile.am b/kalzium/src/icons/Makefile.am new file mode 100644 index 00000000..8cbc0bbb --- /dev/null +++ b/kalzium/src/icons/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = $(AUTODIRS) + +kalziumiconsdir = $(kde_datadir)/kalzium/icons +kalziumicons_ICON = AUTO diff --git a/kalzium/src/icons/cr16-action-calculate.png b/kalzium/src/icons/cr16-action-calculate.png Binary files differnew file mode 100644 index 00000000..7b15c0f3 --- /dev/null +++ b/kalzium/src/icons/cr16-action-calculate.png diff --git a/kalzium/src/icons/cr16-action-chemical.png b/kalzium/src/icons/cr16-action-chemical.png Binary files differnew file mode 100644 index 00000000..4877508a --- /dev/null +++ b/kalzium/src/icons/cr16-action-chemical.png diff --git a/kalzium/src/icons/cr16-action-elempic.png b/kalzium/src/icons/cr16-action-elempic.png Binary files differnew file mode 100644 index 00000000..6741ae0a --- /dev/null +++ b/kalzium/src/icons/cr16-action-elempic.png diff --git a/kalzium/src/icons/cr16-action-energies.png b/kalzium/src/icons/cr16-action-energies.png Binary files differnew file mode 100644 index 00000000..540874e6 --- /dev/null +++ b/kalzium/src/icons/cr16-action-energies.png diff --git a/kalzium/src/icons/cr16-action-eqchem.png b/kalzium/src/icons/cr16-action-eqchem.png Binary files differnew file mode 100644 index 00000000..6814438a --- /dev/null +++ b/kalzium/src/icons/cr16-action-eqchem.png diff --git a/kalzium/src/icons/cr16-action-glossary.png b/kalzium/src/icons/cr16-action-glossary.png Binary files differnew file mode 100644 index 00000000..f02fb32a --- /dev/null +++ b/kalzium/src/icons/cr16-action-glossary.png diff --git a/kalzium/src/icons/cr16-action-isotopemap.png b/kalzium/src/icons/cr16-action-isotopemap.png Binary files differnew file mode 100644 index 00000000..057a9be5 --- /dev/null +++ b/kalzium/src/icons/cr16-action-isotopemap.png diff --git a/kalzium/src/icons/cr16-action-legend.png b/kalzium/src/icons/cr16-action-legend.png Binary files differnew file mode 100644 index 00000000..7330bc5b --- /dev/null +++ b/kalzium/src/icons/cr16-action-legend.png diff --git a/kalzium/src/icons/cr16-action-misc.png b/kalzium/src/icons/cr16-action-misc.png Binary files differnew file mode 100644 index 00000000..97e5e77a --- /dev/null +++ b/kalzium/src/icons/cr16-action-misc.png diff --git a/kalzium/src/icons/cr16-action-orbits.png b/kalzium/src/icons/cr16-action-orbits.png Binary files differnew file mode 100644 index 00000000..79717952 --- /dev/null +++ b/kalzium/src/icons/cr16-action-orbits.png diff --git a/kalzium/src/icons/cr16-action-overview.png b/kalzium/src/icons/cr16-action-overview.png Binary files differnew file mode 100644 index 00000000..1be350fc --- /dev/null +++ b/kalzium/src/icons/cr16-action-overview.png diff --git a/kalzium/src/icons/cr16-action-plot.png b/kalzium/src/icons/cr16-action-plot.png Binary files differnew file mode 100644 index 00000000..c5484d74 --- /dev/null +++ b/kalzium/src/icons/cr16-action-plot.png diff --git a/kalzium/src/icons/cr16-action-sidebar.png b/kalzium/src/icons/cr16-action-sidebar.png Binary files differnew file mode 100644 index 00000000..fc6ef0a7 --- /dev/null +++ b/kalzium/src/icons/cr16-action-sidebar.png diff --git a/kalzium/src/icons/cr16-action-spectrum.png b/kalzium/src/icons/cr16-action-spectrum.png Binary files differnew file mode 100644 index 00000000..1adc2d45 --- /dev/null +++ b/kalzium/src/icons/cr16-action-spectrum.png diff --git a/kalzium/src/icons/cr16-action-statematter.png b/kalzium/src/icons/cr16-action-statematter.png Binary files differnew file mode 100644 index 00000000..1f48c762 --- /dev/null +++ b/kalzium/src/icons/cr16-action-statematter.png diff --git a/kalzium/src/icons/cr16-action-timeline.png b/kalzium/src/icons/cr16-action-timeline.png Binary files differnew file mode 100644 index 00000000..46bf7b07 --- /dev/null +++ b/kalzium/src/icons/cr16-action-timeline.png diff --git a/kalzium/src/icons/cr16-action-tooltip.png b/kalzium/src/icons/cr16-action-tooltip.png Binary files differnew file mode 100644 index 00000000..c6c96d68 --- /dev/null +++ b/kalzium/src/icons/cr16-action-tooltip.png diff --git a/kalzium/src/icons/cr22-action-calculate.png b/kalzium/src/icons/cr22-action-calculate.png Binary files differnew file mode 100644 index 00000000..2f4de681 --- /dev/null +++ b/kalzium/src/icons/cr22-action-calculate.png diff --git a/kalzium/src/icons/cr22-action-chemical.png b/kalzium/src/icons/cr22-action-chemical.png Binary files differnew file mode 100644 index 00000000..c70b1105 --- /dev/null +++ b/kalzium/src/icons/cr22-action-chemical.png diff --git a/kalzium/src/icons/cr22-action-elempic.png b/kalzium/src/icons/cr22-action-elempic.png Binary files differnew file mode 100644 index 00000000..efd036c1 --- /dev/null +++ b/kalzium/src/icons/cr22-action-elempic.png diff --git a/kalzium/src/icons/cr22-action-energies.png b/kalzium/src/icons/cr22-action-energies.png Binary files differnew file mode 100644 index 00000000..205db932 --- /dev/null +++ b/kalzium/src/icons/cr22-action-energies.png diff --git a/kalzium/src/icons/cr22-action-eqchem.png b/kalzium/src/icons/cr22-action-eqchem.png Binary files differnew file mode 100644 index 00000000..56248dae --- /dev/null +++ b/kalzium/src/icons/cr22-action-eqchem.png diff --git a/kalzium/src/icons/cr22-action-glossary.png b/kalzium/src/icons/cr22-action-glossary.png Binary files differnew file mode 100644 index 00000000..5f748aab --- /dev/null +++ b/kalzium/src/icons/cr22-action-glossary.png diff --git a/kalzium/src/icons/cr22-action-isotopemap.png b/kalzium/src/icons/cr22-action-isotopemap.png Binary files differnew file mode 100644 index 00000000..fe9fd7a1 --- /dev/null +++ b/kalzium/src/icons/cr22-action-isotopemap.png diff --git a/kalzium/src/icons/cr22-action-legend.png b/kalzium/src/icons/cr22-action-legend.png Binary files differnew file mode 100644 index 00000000..ec3006cf --- /dev/null +++ b/kalzium/src/icons/cr22-action-legend.png diff --git a/kalzium/src/icons/cr22-action-orbits.png b/kalzium/src/icons/cr22-action-orbits.png Binary files differnew file mode 100644 index 00000000..8b0ee15b --- /dev/null +++ b/kalzium/src/icons/cr22-action-orbits.png diff --git a/kalzium/src/icons/cr22-action-overview.png b/kalzium/src/icons/cr22-action-overview.png Binary files differnew file mode 100644 index 00000000..23691881 --- /dev/null +++ b/kalzium/src/icons/cr22-action-overview.png diff --git a/kalzium/src/icons/cr22-action-plot.png b/kalzium/src/icons/cr22-action-plot.png Binary files differnew file mode 100644 index 00000000..3462547b --- /dev/null +++ b/kalzium/src/icons/cr22-action-plot.png diff --git a/kalzium/src/icons/cr22-action-sidebar.png b/kalzium/src/icons/cr22-action-sidebar.png Binary files differnew file mode 100644 index 00000000..e9a6134c --- /dev/null +++ b/kalzium/src/icons/cr22-action-sidebar.png diff --git a/kalzium/src/icons/cr22-action-spectrum.png b/kalzium/src/icons/cr22-action-spectrum.png Binary files differnew file mode 100644 index 00000000..a8617501 --- /dev/null +++ b/kalzium/src/icons/cr22-action-spectrum.png diff --git a/kalzium/src/icons/cr22-action-statematter.png b/kalzium/src/icons/cr22-action-statematter.png Binary files differnew file mode 100644 index 00000000..4e786c39 --- /dev/null +++ b/kalzium/src/icons/cr22-action-statematter.png diff --git a/kalzium/src/icons/cr22-action-timeline.png b/kalzium/src/icons/cr22-action-timeline.png Binary files differnew file mode 100644 index 00000000..03e6ff87 --- /dev/null +++ b/kalzium/src/icons/cr22-action-timeline.png diff --git a/kalzium/src/icons/cr22-action-tooltip.png b/kalzium/src/icons/cr22-action-tooltip.png Binary files differnew file mode 100644 index 00000000..a095926f --- /dev/null +++ b/kalzium/src/icons/cr22-action-tooltip.png diff --git a/kalzium/src/icons/cr32-action-calculate.png b/kalzium/src/icons/cr32-action-calculate.png Binary files differnew file mode 100644 index 00000000..e4d462da --- /dev/null +++ b/kalzium/src/icons/cr32-action-calculate.png diff --git a/kalzium/src/icons/cr32-action-chemical.png b/kalzium/src/icons/cr32-action-chemical.png Binary files differnew file mode 100644 index 00000000..585f78b8 --- /dev/null +++ b/kalzium/src/icons/cr32-action-chemical.png diff --git a/kalzium/src/icons/cr32-action-elempic.png b/kalzium/src/icons/cr32-action-elempic.png Binary files differnew file mode 100644 index 00000000..21225366 --- /dev/null +++ b/kalzium/src/icons/cr32-action-elempic.png diff --git a/kalzium/src/icons/cr32-action-energies.png b/kalzium/src/icons/cr32-action-energies.png Binary files differnew file mode 100644 index 00000000..a416beae --- /dev/null +++ b/kalzium/src/icons/cr32-action-energies.png diff --git a/kalzium/src/icons/cr32-action-eqchem.png b/kalzium/src/icons/cr32-action-eqchem.png Binary files differnew file mode 100644 index 00000000..6f49f2bb --- /dev/null +++ b/kalzium/src/icons/cr32-action-eqchem.png diff --git a/kalzium/src/icons/cr32-action-glossary.png b/kalzium/src/icons/cr32-action-glossary.png Binary files differnew file mode 100644 index 00000000..6b00ccd5 --- /dev/null +++ b/kalzium/src/icons/cr32-action-glossary.png diff --git a/kalzium/src/icons/cr32-action-isotopemap.png b/kalzium/src/icons/cr32-action-isotopemap.png Binary files differnew file mode 100644 index 00000000..8f7080b9 --- /dev/null +++ b/kalzium/src/icons/cr32-action-isotopemap.png diff --git a/kalzium/src/icons/cr32-action-legend.png b/kalzium/src/icons/cr32-action-legend.png Binary files differnew file mode 100644 index 00000000..a0d02f56 --- /dev/null +++ b/kalzium/src/icons/cr32-action-legend.png diff --git a/kalzium/src/icons/cr32-action-misc.png b/kalzium/src/icons/cr32-action-misc.png Binary files differnew file mode 100644 index 00000000..f22e77a6 --- /dev/null +++ b/kalzium/src/icons/cr32-action-misc.png diff --git a/kalzium/src/icons/cr32-action-orbits.png b/kalzium/src/icons/cr32-action-orbits.png Binary files differnew file mode 100644 index 00000000..accabc36 --- /dev/null +++ b/kalzium/src/icons/cr32-action-orbits.png diff --git a/kalzium/src/icons/cr32-action-overview.png b/kalzium/src/icons/cr32-action-overview.png Binary files differnew file mode 100644 index 00000000..6de624f1 --- /dev/null +++ b/kalzium/src/icons/cr32-action-overview.png diff --git a/kalzium/src/icons/cr32-action-plot.png b/kalzium/src/icons/cr32-action-plot.png Binary files differnew file mode 100644 index 00000000..93c51576 --- /dev/null +++ b/kalzium/src/icons/cr32-action-plot.png diff --git a/kalzium/src/icons/cr32-action-sidebar.png b/kalzium/src/icons/cr32-action-sidebar.png Binary files differnew file mode 100644 index 00000000..7bf1b71f --- /dev/null +++ b/kalzium/src/icons/cr32-action-sidebar.png diff --git a/kalzium/src/icons/cr32-action-spectrum.png b/kalzium/src/icons/cr32-action-spectrum.png Binary files differnew file mode 100644 index 00000000..e33fc6cb --- /dev/null +++ b/kalzium/src/icons/cr32-action-spectrum.png diff --git a/kalzium/src/icons/cr32-action-statematter.png b/kalzium/src/icons/cr32-action-statematter.png Binary files differnew file mode 100644 index 00000000..2157b793 --- /dev/null +++ b/kalzium/src/icons/cr32-action-statematter.png diff --git a/kalzium/src/icons/cr32-action-timeline.png b/kalzium/src/icons/cr32-action-timeline.png Binary files differnew file mode 100644 index 00000000..0d9e528e --- /dev/null +++ b/kalzium/src/icons/cr32-action-timeline.png diff --git a/kalzium/src/icons/cr32-action-tooltip.png b/kalzium/src/icons/cr32-action-tooltip.png Binary files differnew file mode 100644 index 00000000..0f6142ef --- /dev/null +++ b/kalzium/src/icons/cr32-action-tooltip.png diff --git a/kalzium/src/icons/cr48-action-calculate.png b/kalzium/src/icons/cr48-action-calculate.png Binary files differnew file mode 100644 index 00000000..2bb64f0e --- /dev/null +++ b/kalzium/src/icons/cr48-action-calculate.png diff --git a/kalzium/src/icons/cr48-action-chemical.png b/kalzium/src/icons/cr48-action-chemical.png Binary files differnew file mode 100644 index 00000000..76c07896 --- /dev/null +++ b/kalzium/src/icons/cr48-action-chemical.png diff --git a/kalzium/src/icons/cr48-action-elempic.png b/kalzium/src/icons/cr48-action-elempic.png Binary files differnew file mode 100644 index 00000000..21225366 --- /dev/null +++ b/kalzium/src/icons/cr48-action-elempic.png diff --git a/kalzium/src/icons/cr48-action-energies.png b/kalzium/src/icons/cr48-action-energies.png Binary files differnew file mode 100644 index 00000000..34beef0a --- /dev/null +++ b/kalzium/src/icons/cr48-action-energies.png diff --git a/kalzium/src/icons/cr48-action-eqchem.png b/kalzium/src/icons/cr48-action-eqchem.png Binary files differnew file mode 100644 index 00000000..4df4b5bb --- /dev/null +++ b/kalzium/src/icons/cr48-action-eqchem.png diff --git a/kalzium/src/icons/cr48-action-glossary.png b/kalzium/src/icons/cr48-action-glossary.png Binary files differnew file mode 100644 index 00000000..122f6423 --- /dev/null +++ b/kalzium/src/icons/cr48-action-glossary.png diff --git a/kalzium/src/icons/cr48-action-isotopemap.png b/kalzium/src/icons/cr48-action-isotopemap.png Binary files differnew file mode 100644 index 00000000..9c888324 --- /dev/null +++ b/kalzium/src/icons/cr48-action-isotopemap.png diff --git a/kalzium/src/icons/cr48-action-legend.png b/kalzium/src/icons/cr48-action-legend.png Binary files differnew file mode 100644 index 00000000..e9b51c89 --- /dev/null +++ b/kalzium/src/icons/cr48-action-legend.png diff --git a/kalzium/src/icons/cr48-action-misc.png b/kalzium/src/icons/cr48-action-misc.png Binary files differnew file mode 100644 index 00000000..9386f46e --- /dev/null +++ b/kalzium/src/icons/cr48-action-misc.png diff --git a/kalzium/src/icons/cr48-action-orbits.png b/kalzium/src/icons/cr48-action-orbits.png Binary files differnew file mode 100644 index 00000000..697838b1 --- /dev/null +++ b/kalzium/src/icons/cr48-action-orbits.png diff --git a/kalzium/src/icons/cr48-action-overview.png b/kalzium/src/icons/cr48-action-overview.png Binary files differnew file mode 100644 index 00000000..da94ddd8 --- /dev/null +++ b/kalzium/src/icons/cr48-action-overview.png diff --git a/kalzium/src/icons/cr48-action-plot.png b/kalzium/src/icons/cr48-action-plot.png Binary files differnew file mode 100644 index 00000000..5e8fd76f --- /dev/null +++ b/kalzium/src/icons/cr48-action-plot.png diff --git a/kalzium/src/icons/cr48-action-sidebar.png b/kalzium/src/icons/cr48-action-sidebar.png Binary files differnew file mode 100644 index 00000000..b23a8770 --- /dev/null +++ b/kalzium/src/icons/cr48-action-sidebar.png diff --git a/kalzium/src/icons/cr48-action-spectrum.png b/kalzium/src/icons/cr48-action-spectrum.png Binary files differnew file mode 100644 index 00000000..8e7a93ee --- /dev/null +++ b/kalzium/src/icons/cr48-action-spectrum.png diff --git a/kalzium/src/icons/cr48-action-statematter.png b/kalzium/src/icons/cr48-action-statematter.png Binary files differnew file mode 100644 index 00000000..3daca346 --- /dev/null +++ b/kalzium/src/icons/cr48-action-statematter.png diff --git a/kalzium/src/icons/cr48-action-timeline.png b/kalzium/src/icons/cr48-action-timeline.png Binary files differnew file mode 100644 index 00000000..80ca53aa --- /dev/null +++ b/kalzium/src/icons/cr48-action-timeline.png diff --git a/kalzium/src/icons/cr48-action-tooltip.png b/kalzium/src/icons/cr48-action-tooltip.png Binary files differnew file mode 100644 index 00000000..fae1db9c --- /dev/null +++ b/kalzium/src/icons/cr48-action-tooltip.png diff --git a/kalzium/src/icons/crsc-action-calculate.svgz b/kalzium/src/icons/crsc-action-calculate.svgz Binary files differnew file mode 100644 index 00000000..6e194e93 --- /dev/null +++ b/kalzium/src/icons/crsc-action-calculate.svgz diff --git a/kalzium/src/icons/crsc-action-chemical.svgz b/kalzium/src/icons/crsc-action-chemical.svgz Binary files differnew file mode 100644 index 00000000..7358e162 --- /dev/null +++ b/kalzium/src/icons/crsc-action-chemical.svgz diff --git a/kalzium/src/icons/crsc-action-elempic.svgz b/kalzium/src/icons/crsc-action-elempic.svgz Binary files differnew file mode 100644 index 00000000..ba8949a6 --- /dev/null +++ b/kalzium/src/icons/crsc-action-elempic.svgz diff --git a/kalzium/src/icons/crsc-action-energies.svgz b/kalzium/src/icons/crsc-action-energies.svgz Binary files differnew file mode 100644 index 00000000..16b9f6e7 --- /dev/null +++ b/kalzium/src/icons/crsc-action-energies.svgz diff --git a/kalzium/src/icons/crsc-action-eqchem.svgz b/kalzium/src/icons/crsc-action-eqchem.svgz Binary files differnew file mode 100644 index 00000000..b1b31155 --- /dev/null +++ b/kalzium/src/icons/crsc-action-eqchem.svgz diff --git a/kalzium/src/icons/crsc-action-glossary.svgz b/kalzium/src/icons/crsc-action-glossary.svgz Binary files differnew file mode 100644 index 00000000..5b0c8f1e --- /dev/null +++ b/kalzium/src/icons/crsc-action-glossary.svgz diff --git a/kalzium/src/icons/crsc-action-isotopemap.svgz b/kalzium/src/icons/crsc-action-isotopemap.svgz Binary files differnew file mode 100644 index 00000000..96fb3121 --- /dev/null +++ b/kalzium/src/icons/crsc-action-isotopemap.svgz diff --git a/kalzium/src/icons/crsc-action-misc.svgz b/kalzium/src/icons/crsc-action-misc.svgz Binary files differnew file mode 100644 index 00000000..21d14d28 --- /dev/null +++ b/kalzium/src/icons/crsc-action-misc.svgz diff --git a/kalzium/src/icons/crsc-action-orbits.svgz b/kalzium/src/icons/crsc-action-orbits.svgz new file mode 100644 index 00000000..38ed6eb4 --- /dev/null +++ b/kalzium/src/icons/crsc-action-orbits.svgz @@ -0,0 +1,1119 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" +"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + width="210mm" + height="297mm" + id="svg1" + sodipodi:version="0.32" + inkscape:version="0.40" + sodipodi:docbase="/home/bbeck/kalzium" + sodipodi:docname="atom2.svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:cc="http://web.resource.org/cc/" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:xlink="http://www.w3.org/1999/xlink"> + <defs + id="defs3"> + <linearGradient + id="linearGradient1835"> + <stop + style="stop-color:#cbb7ff;stop-opacity:1.0000000;" + offset="0.0000000" + id="stop1836" /> + <stop + style="stop-color:#cb30ff;stop-opacity:1.0000000;" + offset="1.0000000" + id="stop1837" /> + </linearGradient> + <linearGradient + id="linearGradient2402"> + <stop + style="stop-color:#b00000;stop-opacity:1.0000000;" + offset="0.0000000" + id="stop2403" /> + <stop + style="stop-color:#ff0000;stop-opacity:1.0000000;" + offset="1.0000000" + id="stop2404" /> + </linearGradient> + <linearGradient + id="linearGradient1683" + inkscape:collect="always"> + <stop + style="stop-color:#000000;stop-opacity:1.0000000;" + offset="0.0000000" + id="stop1684" /> + <stop + style="stop-color:#000000;stop-opacity:0;" + offset="1" + id="stop1685" /> + </linearGradient> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2333" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2348" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2352" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2356" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2359" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2369" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2373" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2377" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2378" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2383" + gradientTransform="scale(1.066004,0.938083)" + x1="191.58086" + y1="423.11737" + x2="273.45303" + y2="423.11737" + gradientUnits="userSpaceOnUse" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2402" + id="linearGradient1863" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.969223,1.031754)" + x1="187.31265" + y1="353.74872" + x2="167.84241" + y2="333.24884" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient1864" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient1865" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient1866" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient1867" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2402" + id="linearGradient1986" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.969223,1.031754)" + x1="187.31265" + y1="353.74872" + x2="167.84241" + y2="333.24884" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient1987" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient1988" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient1989" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient1990" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2078" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2084" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2090" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2402" + id="linearGradient2116" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.969223,1.031754)" + x1="187.31265" + y1="353.74872" + x2="167.84241" + y2="333.24884" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2117" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2402" + id="linearGradient2139" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.969223,1.031754)" + x1="187.31265" + y1="353.74872" + x2="167.84241" + y2="333.24884" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2140" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2141" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2142" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2143" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2402" + id="linearGradient2181" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.969223,1.031754)" + x1="187.31265" + y1="353.74872" + x2="167.84241" + y2="333.24884" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2182" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2196" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2202" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2208" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2209" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient2402" + id="linearGradient2234" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.969223,1.031754)" + x1="187.31265" + y1="353.74872" + x2="167.84241" + y2="333.24884" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2235" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2236" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2237" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + <linearGradient + inkscape:collect="always" + xlink:href="#linearGradient1683" + id="linearGradient2238" + gradientUnits="userSpaceOnUse" + gradientTransform="scale(0.891862,1.121249)" + x1="300.57932" + y1="158.56863" + x2="441.32010" + y2="172.73509" /> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.6162734" + inkscape:cx="71.287200" + inkscape:cy="534.09839" + inkscape:current-layer="layer1" + inkscape:window-width="1016" + inkscape:window-height="714" + inkscape:window-x="0" + inkscape:window-y="0" + showguides="true" + inkscape:guide-bbox="true" /> + <metadata + id="metadata4"> + <rdf:RDF + id="RDF5"> + <cc:Work + rdf:about="" + id="Work6"> + <dc:format + id="format7">image/svg+xml</dc:format> + <dc:type + id="type9" + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <g + id="g1962" + transform="matrix(0.983519,0.000000,0.000000,0.983519,-23.72097,226.1030)" + inkscape:export-filename="/home/bbeck/kalzium/orbit_16.png" + inkscape:export-xdpi="72.000000" + inkscape:export-ydpi="72.000000"> + <g + id="g1870" + transform="matrix(0.123480,0.000000,0.000000,0.123480,70.55759,343.3885)"> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient1986);fill-opacity:1.0000000;stroke:none;stroke-width:2.2500000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1871" + sodipodi:cx="168.44272" + sodipodi:cy="353.28128" + sodipodi:rx="27.055565" + sodipodi:ry="28.801086" + d="M 195.49828 353.28128 A 27.055565 28.801086 0 1 1 141.38715,353.28128 A 27.055565 28.801086 0 1 1 195.49828 353.28128 z" + transform="matrix(0.623390,0.000000,0.000000,0.585609,33.76345,148.2987)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:0.64971751;stroke:none;stroke-width:2.2500000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1872" + sodipodi:cx="168.75256" + sodipodi:cy="332.94336" + sodipodi:rx="7.1053710" + sodipodi:ry="6.0395656" + d="M 175.85793 332.94336 A 7.1053710 6.0395656 0 1 1 161.64719,332.94336 A 7.1053710 6.0395656 0 1 1 175.85793 332.94336 z" + transform="matrix(1.063522,-0.830370,0.553579,0.709015,-231.9176,252.0260)" /> + </g> + <g + id="g1937" + transform="translate(-1.182962,2.842171e-14)"> + <g + id="g1933" + transform="translate(2.566619,3.935483)"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:0.83750004;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 83.471919,378.41925 C 84.039843,375.51573 85.098169,373.56221 86.309133,373.56221 C 87.520087,373.56221 88.578405,375.51570 89.146333,378.41917" + id="path1880" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient1987);stroke-width:11.731805;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1881" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(4.726022e-2,0.000000,-2.635967e-18,0.111074,70.53221,357.4970)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path1885" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.101433,0.000000,0.000000,8.274761e-2,70.72234,362.5711)" /> + </g> + <g + id="g1943" + transform="matrix(0.000000,1.000000,-1.000000,0.000000,474.9393,298.3708)"> + <g + id="g1944" + transform="translate(2.566619,3.935483)"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:0.83750004;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 83.471919,378.41925 C 84.039843,375.51573 85.098169,373.56221 86.309133,373.56221 C 87.520087,373.56221 88.578405,375.51570 89.146333,378.41917" + id="path1945" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient1988);stroke-width:11.731805;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1946" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(4.726022e-2,0.000000,-2.635967e-18,0.111074,70.53221,357.4970)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path1947" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.101433,0.000000,0.000000,8.274761e-2,70.72234,362.5711)" /> + </g> + <g + id="g1949" + transform="matrix(0.707107,-0.707107,0.707107,0.707107,-248.9766,176.2665)"> + <g + id="g1950" + transform="translate(2.566619,3.935483)"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:0.83750004;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 83.471919,378.41925 C 84.039843,375.51573 85.098169,373.56221 86.309133,373.56221 C 87.520087,373.56221 88.578405,375.51570 89.146333,378.41917" + id="path1951" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient1989);stroke-width:11.731805;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1952" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(4.726022e-2,0.000000,-2.635967e-18,0.111074,70.53221,357.4970)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path1953" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.101433,0.000000,0.000000,8.274761e-2,70.72234,362.5711)" /> + </g> + <g + id="g1955" + transform="matrix(0.707107,0.707107,-0.707107,0.707107,298.6728,50.57713)"> + <g + id="g1956" + transform="translate(2.566619,3.935483)"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:0.83750004;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 83.471919,378.41925 C 84.039843,375.51573 85.098169,373.56221 86.309133,373.56221 C 87.520087,373.56221 88.578405,375.51570 89.146333,378.41917" + id="path1957" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient1990);stroke-width:11.731805;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1958" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(4.726022e-2,0.000000,-2.635967e-18,0.111074,70.53221,357.4970)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path1959" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.101433,0.000000,0.000000,8.274761e-2,70.72234,362.5711)" /> + </g> + </g> + <g + id="g1842" + transform="matrix(0.987843,0.000000,0.000000,0.987843,-18.71409,-51.12070)" + inkscape:export-filename="/home/bbeck/kalzium/orbit_32.png" + inkscape:export-xdpi="72.000000" + inkscape:export-ydpi="72.000000"> + <g + id="g1818"> + <g + id="g1801" + transform="translate(0.769610,-18.38206)"> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient1863);fill-opacity:1.0000000;stroke:none;stroke-width:2.2500000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2401" + sodipodi:cx="168.44272" + sodipodi:cy="353.28128" + sodipodi:rx="27.055565" + sodipodi:ry="28.801086" + d="M 195.49828 353.28128 A 27.055565 28.801086 0 1 1 141.38715,353.28128 A 27.055565 28.801086 0 1 1 195.49828 353.28128 z" + transform="matrix(0.623390,0.000000,0.000000,0.585609,33.76345,148.2987)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:0.64971751;stroke:none;stroke-width:2.2500000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2406" + sodipodi:cx="168.75256" + sodipodi:cy="332.94336" + sodipodi:rx="7.1053710" + sodipodi:ry="6.0395656" + d="M 175.85793 332.94336 A 7.1053710 6.0395656 0 1 1 161.64719,332.94336 A 7.1053710 6.0395656 0 1 1 175.85793 332.94336 z" + transform="matrix(1.063522,-0.830370,0.553579,0.709015,-231.9176,252.0260)" /> + </g> + <g + id="g1798" + transform="translate(20.03115,135.8788)"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:3.7749999;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 131.47950,156.65480 C 151.35863,143.28009 168.60595,138.15375 175.54052,145.08832 C 182.47503,152.02283 177.34884,169.26991 163.97440,189.14881" + id="path2371" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient1864);stroke-width:6.5189009;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2372" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(0.270635,0.270635,-0.636063,0.636063,176.7672,-37.22871)" /> + </g> + <g + id="g1805" + transform="matrix(0.707107,0.707107,-0.707107,0.707107,197.1026,110.3637)"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:3.7749999;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 131.47950,156.65480 C 151.35863,143.28009 168.60595,138.15375 175.54052,145.08832 C 182.47503,152.02283 177.34884,169.26991 163.97440,189.14881" + id="path1806" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient1865);stroke-width:6.5189009;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1807" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(0.270635,0.270635,-0.636063,0.636063,176.7672,-37.22871)" /> + </g> + <g + id="g1809" + transform="matrix(0.707107,-0.707107,0.707107,0.707107,-86.89907,279.2373)"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:3.7749999;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 131.47950,156.65480 C 151.35863,143.28009 168.60595,138.15375 175.54052,145.08832 C 182.47503,152.02283 177.34884,169.26991 163.97440,189.14881" + id="path1810" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient1866);stroke-width:6.5189009;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1811" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(0.270635,0.270635,-0.636063,0.636063,176.7672,-37.22871)" /> + </g> + <g + id="g1813" + transform="matrix(-1.151965e-17,-1.000000,1.000000,0.000000,-61.38398,456.3087)"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:3.7749999;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 131.47950,156.65480 C 151.35863,143.28009 168.60595,138.15375 175.54052,145.08832 C 182.47503,152.02283 177.34884,169.26991 163.97440,189.14881" + id="path1814" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient1867);stroke-width:6.5189009;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1815" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(0.270635,0.270635,-0.636063,0.636063,176.7672,-37.22871)" /> + </g> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path1834" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.608595,0.000000,0.000000,0.496486,37.25905,179.7791)" /> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path1839" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.608595,0.000000,0.000000,0.496486,4.065279,174.6112)" /> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path1840" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.608595,0.000000,0.000000,0.496486,56.53937,208.7989)" /> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path1841" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.608595,0.000000,0.000000,0.496486,51.76900,241.7939)" /> + </g> + <g + id="g2092" + transform="matrix(0.995757,0.000000,0.000000,0.995757,-42.47908,74.23080)" + inkscape:export-filename="/home/bbeck/kalzium/orbit_32.png" + inkscape:export-xdpi="72.000000" + inkscape:export-ydpi="72.000000"> + <g + id="g1993" + transform="matrix(0.246961,0.000000,0.000000,0.246961,69.94307,403.2023)"> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient2116);fill-opacity:1.0000000;stroke:none;stroke-width:2.2500000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1994" + sodipodi:cx="168.44272" + sodipodi:cy="353.28128" + sodipodi:rx="27.055565" + sodipodi:ry="28.801086" + d="M 195.49828 353.28128 A 27.055565 28.801086 0 1 1 141.38715,353.28128 A 27.055565 28.801086 0 1 1 195.49828 353.28128 z" + transform="matrix(0.623390,0.000000,0.000000,0.585609,33.76345,148.2987)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:0.64971751;stroke:none;stroke-width:2.2500000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path1995" + sodipodi:cx="168.75256" + sodipodi:cy="332.94336" + sodipodi:rx="7.1053710" + sodipodi:ry="6.0395656" + d="M 175.85793 332.94336 A 7.1053710 6.0395656 0 1 1 161.64719,332.94336 A 7.1053710 6.0395656 0 1 1 175.85793 332.94336 z" + transform="matrix(1.063522,-0.830370,0.553579,0.709015,-231.9176,252.0260)" /> + </g> + <g + id="g2068" + transform="translate(0.971492,2.842171e-14)"> + <g + id="g2065"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.1875000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 97.567655,481.14136 C 98.703508,475.33431 100.82017,471.42724 103.24211,471.42724 C 105.66403,471.42724 107.78068,475.33424 108.91654,481.14121" + id="path2003" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2117);stroke-width:8.2812357;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2004" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(9.452090e-2,0.000000,-9.825582e-19,0.222149,71.68811,439.2904)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path2009" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.202865,0.000000,0.000000,0.165495,67.09215,442.3923)" /> + </g> + <g + id="g2073" + transform="matrix(0.707107,-0.707107,0.707107,0.707107,-315.9217,216.7899)"> + <g + id="g2074"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.1875000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 97.567655,481.14136 C 98.703508,475.33431 100.82017,471.42724 103.24211,471.42724 C 105.66403,471.42724 107.78068,475.33424 108.91654,481.14121" + id="path2075" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2078);stroke-width:8.2812357;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2076" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(9.452090e-2,0.000000,-9.825582e-19,0.222149,71.68811,439.2904)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path2077" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.202865,0.000000,0.000000,0.165495,67.09215,442.3923)" /> + </g> + <g + id="g2079" + transform="matrix(0.000000,1.000000,-1.000000,0.000000,595.1323,387.6766)"> + <g + id="g2080"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.1875000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 97.567655,481.14136 C 98.703508,475.33431 100.82017,471.42724 103.24211,471.42724 C 105.66403,471.42724 107.78068,475.33424 108.91654,481.14121" + id="path2081" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2084);stroke-width:8.2812357;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2082" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(9.452090e-2,0.000000,-9.825582e-19,0.222149,71.68811,439.2904)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path2083" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.202865,0.000000,0.000000,0.165495,67.09215,442.3923)" /> + </g> + <g + id="g2085" + transform="matrix(0.707107,0.707107,-0.707107,0.707107,378.3424,70.78344)"> + <g + id="g2086"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.1875000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 97.567655,481.14136 C 98.703508,475.33431 100.82017,471.42724 103.24211,471.42724 C 105.66403,471.42724 107.78068,475.33424 108.91654,481.14121" + id="path2087" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2090);stroke-width:8.2812357;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2088" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(9.452090e-2,0.000000,-9.825582e-19,0.222149,71.68811,439.2904)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path2089" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.202865,0.000000,0.000000,0.165495,67.09215,442.3923)" /> + </g> + </g> + <g + id="g2210" + transform="matrix(0.998039,0.000000,0.000000,0.998039,0.136320,0.911223)" + inkscape:export-filename="/home/bbeck/kalzium/orbit_48.png" + inkscape:export-xdpi="72.000000" + inkscape:export-ydpi="72.000000"> + <g + id="g2120" + transform="matrix(0.370441,0.000000,0.000000,0.370441,18.10217,333.0467)"> + <path + sodipodi:type="arc" + style="fill:url(#linearGradient2234);fill-opacity:1.0000000;stroke:none;stroke-width:2.2500000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2121" + sodipodi:cx="168.44272" + sodipodi:cy="353.28128" + sodipodi:rx="27.055565" + sodipodi:ry="28.801086" + d="M 195.49828 353.28128 A 27.055565 28.801086 0 1 1 141.38715,353.28128 A 27.055565 28.801086 0 1 1 195.49828 353.28128 z" + transform="matrix(0.623390,0.000000,0.000000,0.585609,33.76345,148.2987)" /> + <path + sodipodi:type="arc" + style="fill:#ffffff;fill-opacity:0.64971751;stroke:none;stroke-width:2.2500000;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2122" + sodipodi:cx="168.75256" + sodipodi:cy="332.94336" + sodipodi:rx="7.1053710" + sodipodi:ry="6.0395656" + d="M 175.85793 332.94336 A 7.1053710 6.0395656 0 1 1 161.64719,332.94336 A 7.1053710 6.0395656 0 1 1 175.85793 332.94336 z" + transform="matrix(1.063522,-0.830370,0.553579,0.709015,-231.9176,252.0260)" /> + </g> + <g + id="g2186" + transform="translate(-2.320503,8.213411)"> + <g + id="g2183"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.6500000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 63.316752,441.74499 C 65.020526,433.03445 68.195508,427.17387 71.828404,427.17387 C 75.461269,427.17387 78.636227,433.03435 80.340012,441.74476" + id="path2130" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2235);stroke-width:7.6486678;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2131" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(0.141781,0.000000,-6.532318e-18,0.333222,24.49752,378.9657)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path2135" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.253581,0.000000,0.000000,0.206869,27.98098,392.8128)" /> + </g> + <g + id="g2191" + transform="matrix(0.000000,1.000000,-1.000000,0.000000,525.9157,392.7929)"> + <g + id="g2192"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.6500000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 63.316752,441.74499 C 65.020526,433.03445 68.195508,427.17387 71.828404,427.17387 C 75.461269,427.17387 78.636227,433.03435 80.340012,441.74476" + id="path2193" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2236);stroke-width:7.6486678;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2194" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(0.141781,0.000000,-6.532318e-18,0.333222,24.49752,378.9657)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path2195" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.253581,0.000000,0.000000,0.206869,27.98098,392.8128)" /> + </g> + <g + id="g2197" + transform="matrix(0.707107,-0.707107,0.707107,0.707107,-304.0116,192.6824)"> + <g + id="g2198"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.6500000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 63.316752,441.74499 C 65.020526,433.03445 68.195508,427.17387 71.828404,427.17387 C 75.461269,427.17387 78.636227,433.03435 80.340012,441.74476" + id="path2199" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2237);stroke-width:7.6486678;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2200" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(0.141781,0.000000,-6.532318e-18,0.333222,24.49752,378.9657)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path2201" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.253581,0.000000,0.000000,0.206869,27.98098,392.8128)" /> + </g> + <g + id="g2203" + transform="matrix(0.707107,0.707107,-0.707107,0.707107,341.4467,91.10171)"> + <g + id="g2204"> + <path + style="fill:none;fill-opacity:1.0000000;stroke:#000000;stroke-width:1.6500000;stroke-linecap:round;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + d="M 63.316752,441.74499 C 65.020526,433.03445 68.195508,427.17387 71.828404,427.17387 C 75.461269,427.17387 78.636227,433.03435 80.340012,441.74476" + id="path2205" /> + <path + sodipodi:type="arc" + style="fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2238);stroke-width:7.6486678;stroke-miterlimit:4.0000000;stroke-opacity:1.0000000" + id="path2206" + sodipodi:cx="333.83078" + sodipodi:cy="232.40399" + sodipodi:rx="69.384438" + sodipodi:ry="87.712395" + d="M 403.21522 232.40399 A 69.384438 87.712395 0 1 1 264.44634,232.40399 A 69.384438 87.712395 0 1 1 403.21522 232.40399 z" + transform="matrix(0.141781,0.000000,-6.532318e-18,0.333222,24.49752,378.9657)" /> + </g> + <path + sodipodi:type="arc" + style="fill:#cb30ff;fill-opacity:1.0000000;stroke-width:4.1966410;stroke-linecap:round;stroke-miterlimit:4.0000000" + id="path2207" + sodipodi:cx="206.91487" + sodipodi:cy="239.41132" + sodipodi:rx="6.1617303" + sodipodi:ry="7.5530887" + d="M 213.07660 239.41132 A 6.1617303 7.5530887 0 1 1 200.75314,239.41132 A 6.1617303 7.5530887 0 1 1 213.07660 239.41132 z" + transform="matrix(0.253581,0.000000,0.000000,0.206869,27.98098,392.8128)" /> + </g> + </g> + </g> +</svg> diff --git a/kalzium/src/icons/crsc-action-overview.svgz b/kalzium/src/icons/crsc-action-overview.svgz Binary files differnew file mode 100644 index 00000000..8261cc4e --- /dev/null +++ b/kalzium/src/icons/crsc-action-overview.svgz diff --git a/kalzium/src/icons/crsc-action-plot.svgz b/kalzium/src/icons/crsc-action-plot.svgz Binary files differnew file mode 100644 index 00000000..15116f5f --- /dev/null +++ b/kalzium/src/icons/crsc-action-plot.svgz diff --git a/kalzium/src/icons/crsc-action-sidebar.svgz b/kalzium/src/icons/crsc-action-sidebar.svgz Binary files differnew file mode 100644 index 00000000..e5552c47 --- /dev/null +++ b/kalzium/src/icons/crsc-action-sidebar.svgz diff --git a/kalzium/src/icons/crsc-action-spectrum.svgz b/kalzium/src/icons/crsc-action-spectrum.svgz Binary files differnew file mode 100644 index 00000000..7967f757 --- /dev/null +++ b/kalzium/src/icons/crsc-action-spectrum.svgz diff --git a/kalzium/src/icons/crsc-action-statematter.svgz b/kalzium/src/icons/crsc-action-statematter.svgz Binary files differnew file mode 100644 index 00000000..2a80a8e1 --- /dev/null +++ b/kalzium/src/icons/crsc-action-statematter.svgz diff --git a/kalzium/src/icons/crsc-action-timeline.svgz b/kalzium/src/icons/crsc-action-timeline.svgz Binary files differnew file mode 100644 index 00000000..5b1b52fa --- /dev/null +++ b/kalzium/src/icons/crsc-action-timeline.svgz diff --git a/kalzium/src/icons/crsc-action-tooltip.svgz b/kalzium/src/icons/crsc-action-tooltip.svgz Binary files differnew file mode 100644 index 00000000..aa3f747a --- /dev/null +++ b/kalzium/src/icons/crsc-action-tooltip.svgz diff --git a/kalzium/src/icons/htmlview/Makefile.am b/kalzium/src/icons/htmlview/Makefile.am new file mode 100644 index 00000000..57763b1e --- /dev/null +++ b/kalzium/src/icons/htmlview/Makefile.am @@ -0,0 +1,3 @@ +appdatadir = $(kde_datadir)/kalzium/data/htmlview +appdata_DATA = characteristics.png density.png header.png icons.svg radius.png structure.png style.css mass.png book.png boilingpoint.png meltingpoint.png ionisation.png electronaffinity.png discovery.png abundance.png + diff --git a/kalzium/src/icons/htmlview/abundance.png b/kalzium/src/icons/htmlview/abundance.png Binary files differnew file mode 100644 index 00000000..20258695 --- /dev/null +++ b/kalzium/src/icons/htmlview/abundance.png diff --git a/kalzium/src/icons/htmlview/boilingpoint.png b/kalzium/src/icons/htmlview/boilingpoint.png Binary files differnew file mode 100644 index 00000000..3f0c7fcb --- /dev/null +++ b/kalzium/src/icons/htmlview/boilingpoint.png diff --git a/kalzium/src/icons/htmlview/book.png b/kalzium/src/icons/htmlview/book.png Binary files differnew file mode 100644 index 00000000..895d4545 --- /dev/null +++ b/kalzium/src/icons/htmlview/book.png diff --git a/kalzium/src/icons/htmlview/characteristics.png b/kalzium/src/icons/htmlview/characteristics.png Binary files differnew file mode 100644 index 00000000..a6ff407a --- /dev/null +++ b/kalzium/src/icons/htmlview/characteristics.png diff --git a/kalzium/src/icons/htmlview/density.png b/kalzium/src/icons/htmlview/density.png Binary files differnew file mode 100644 index 00000000..1475b70a --- /dev/null +++ b/kalzium/src/icons/htmlview/density.png diff --git a/kalzium/src/icons/htmlview/discovery.png b/kalzium/src/icons/htmlview/discovery.png Binary files differnew file mode 100644 index 00000000..c3b21c45 --- /dev/null +++ b/kalzium/src/icons/htmlview/discovery.png diff --git a/kalzium/src/icons/htmlview/electronaffinity.png b/kalzium/src/icons/htmlview/electronaffinity.png Binary files differnew file mode 100644 index 00000000..3082d02a --- /dev/null +++ b/kalzium/src/icons/htmlview/electronaffinity.png diff --git a/kalzium/src/icons/htmlview/header.png b/kalzium/src/icons/htmlview/header.png Binary files differnew file mode 100644 index 00000000..d9a23098 --- /dev/null +++ b/kalzium/src/icons/htmlview/header.png diff --git a/kalzium/src/icons/htmlview/icons.svg b/kalzium/src/icons/htmlview/icons.svg new file mode 100644 index 00000000..47645a26 --- /dev/null +++ b/kalzium/src/icons/htmlview/icons.svg @@ -0,0 +1,698 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://web.resource.org/cc/" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + sodipodi:docname="icons.svg" + sodipodi:docbase="d:\files\www\test\kalzium" + inkscape:version="0.40+cvs" + sodipodi:version="0.32" + id="svg2" + height="297mm" + width="210mm"> + <defs + id="defs3"> + <marker + inkscape:stockid="DistanceIn" + orient="auto" + refY="0.0" + refX="0.0" + id="DistanceIn" + style="overflow:visible"> + <g + transform="scale(0.6,0.6) translate(8,0)" + id="g987"> + <path + sodipodi:nodetypes="ccccc" + id="path974" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" /> + <path + id="path976" + d="M -14.759949,-7 L -14.759949,65" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2pt;marker-start:none" /> + </g> + </marker> + <marker + inkscape:stockid="DistanceOut" + orient="auto" + refY="0.0" + refX="0.0" + id="DistanceOut" + style="overflow:visible"> + <g + transform="scale(-0.6,0.6) translate(8,0)" + id="g990"> + <path + sodipodi:nodetypes="ccccc" + id="path991" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" /> + <path + id="path992" + d="M -14.759949,-7 L -14.759949,65" + style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.2pt;marker-start:none" /> + </g> + </marker> + <linearGradient + id="linearGradient2426"> + <stop + id="stop2428" + offset="0.00000000" + style="stop-color:#005fd6;stop-opacity:1.0000000;" /> + <stop + id="stop2430" + offset="1.0000000" + style="stop-color:#b4d2de;stop-opacity:0.00000000;" /> + </linearGradient> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="cccc" + id="path2379" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path2393" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.4)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;"> + <path + sodipodi:nodetypes="cccc" + id="path2388" + style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(-5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible"> + <path + sodipodi:nodetypes="ccccc" + id="path2396" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none" + transform="scale(0.8)" /> + </marker> + <linearGradient + id="linearGradient2084" + inkscape:collect="always"> + <stop + id="stop2086" + offset="0" + style="stop-color:#ffffff;stop-opacity:1;" /> + <stop + id="stop2088" + offset="1" + style="stop-color:#ffffff;stop-opacity:0;" /> + </linearGradient> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2134" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2181" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2189" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2197" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2205" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2213" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2221" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2229" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2237" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2245" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2259" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + y2="565.07660" + x2="183.94415" + y1="555.78204" + x1="183.94418" + gradientTransform="scale(1.123903,0.889757)" + gradientUnits="userSpaceOnUse" + id="linearGradient2267" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <radialGradient + gradientUnits="userSpaceOnUse" + r="38.120567" + fy="543.75037" + fx="257.08383" + cy="543.75037" + cx="257.08383" + id="radialGradient2432" + xlink:href="#linearGradient2426" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="515.60339" + x2="289.12891" + y1="515.60339" + x1="277.50262" + gradientTransform="scale(0.775088,1.290176)" + id="linearGradient2476" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + <linearGradient + gradientUnits="userSpaceOnUse" + y2="704.73254" + x2="241.40240" + y1="704.73254" + x1="201.22742" + gradientTransform="matrix(0.965609,0.000000,0.000000,1.065867,9.125532,-55.93254)" + id="linearGradient2486" + xlink:href="#linearGradient2084" + inkscape:collect="always" /> + </defs> + <sodipodi:namedview + inkscape:window-y="-4" + inkscape:window-x="-4" + inkscape:window-height="952" + inkscape:window-width="1280" + inkscape:current-layer="layer1" + inkscape:document-units="px" + inkscape:cy="431.38817" + inkscape:cx="196.65108" + inkscape:zoom="0.56447325" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + borderopacity="1.0" + bordercolor="#666666" + pagecolor="#ffffff" + id="base" /> + <metadata + id="metadata4"> + <rdf:RDF + id="RDF5"> + <cc:Work + id="Work6" + rdf:about=""> + <dc:format + id="format7">image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" + id="type9" /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:groupmode="layer" + inkscape:label="Layer 1"> + <g + id="g2528"> + <path + transform="matrix(1.085299,-0.707420,0.626598,1.225287,-234.3469,19.42315)" + d="M 262.85714 363.79074 A 29.285715 10.000000 0 1 1 204.28571,363.79074 A 29.285715 10.000000 0 1 1 262.85714 363.79074 z" + sodipodi:ry="10.000000" + sodipodi:rx="29.285715" + sodipodi:cy="363.79074" + sodipodi:cx="233.57143" + id="path1291" + style="stroke-opacity:1.0000000;stroke-dashoffset:0.00000000;stroke-miterlimit:4.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:2.5000000;stroke:#001fb4;fill-opacity:1.0000000;fill:none" + sodipodi:type="arc" /> + <path + transform="matrix(1.085299,0.707420,-0.626598,1.225287,222.4493,-311.0432)" + d="M 262.85714 363.79074 A 29.285715 10.000000 0 1 1 204.28571,363.79074 A 29.285715 10.000000 0 1 1 262.85714 363.79074 z" + sodipodi:ry="10.000000" + sodipodi:rx="29.285715" + sodipodi:cy="363.79074" + sodipodi:cx="233.57143" + id="path2054" + style="stroke-opacity:1.0000000;stroke-dashoffset:0.00000000;stroke-miterlimit:4.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:2.5000000;stroke:#001fb4;fill-opacity:1.0000000;fill:none" + sodipodi:type="arc" /> + <g + id="g2249"> + <path + transform="matrix(0.636364,0.000000,0.000000,0.636364,112.6623,13.19668)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2241" + style="fill:#1fcb71;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.442094,0.000000,0.000000,0.427089,157.9942,84.07187)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2243" + style="stroke-opacity:1.0000000;stroke-dashoffset:0.00000000;stroke-miterlimit:4.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:2.5000000;stroke:none;fill-opacity:1.0000000;fill:url(#linearGradient2245);opacity:0.76363635" + sodipodi:type="arc" /> + </g> + <g + transform="translate(-32.85718,-18.21448)" + id="g2253"> + <path + transform="matrix(0.636364,0.000000,0.000000,0.636364,112.6623,13.19668)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2255" + style="fill:#1fcb71;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.442094,0.000000,0.000000,0.427089,157.9942,84.07187)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2257" + style="opacity:0.76363635;fill:url(#linearGradient2259);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + <g + transform="translate(13.00068,6.284792)" + id="g2261"> + <path + transform="matrix(0.636364,0.000000,0.000000,0.636364,112.6623,13.19668)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2263" + style="fill:#1fcb71;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.442094,0.000000,0.000000,0.427089,157.9942,84.07187)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2265" + style="opacity:0.76363635;fill:url(#linearGradient2267);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + </g> + <g + id="g2499"> + <g + id="g2171"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2130" + style="stroke-opacity:1.0000000;stroke-dashoffset:0.00000000;stroke-miterlimit:4.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:2.5000000;stroke:none;fill-opacity:1.0000000;fill:#1f47c8" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2132" + style="stroke-opacity:1.0000000;stroke-dashoffset:0.00000000;stroke-miterlimit:4.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:2.5000000;stroke:none;fill-opacity:1.0000000;fill:url(#linearGradient2134);opacity:0.76363635" + sodipodi:type="arc" /> + </g> + <g + transform="translate(6.337991,-22.32732)" + id="g2175"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2177" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2179" + style="opacity:0.76363635;fill:url(#linearGradient2181);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + <g + transform="translate(17.05228,-0.184457)" + id="g2183"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2185" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2187" + style="opacity:0.76363635;fill:url(#linearGradient2189);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + <g + transform="translate(29.90942,-10.89874)" + id="g2191"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2193" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2195" + style="opacity:0.76363635;fill:url(#linearGradient2197);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + <g + transform="translate(39.19514,-0.898746)" + id="g2199"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2201" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2203" + style="opacity:0.76363635;fill:url(#linearGradient2205);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + <g + transform="translate(39.90942,-18.75589)" + id="g2207"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2209" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2211" + style="opacity:0.76363635;fill:url(#linearGradient2213);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + <g + transform="translate(22.76657,-29.47017)" + id="g2215"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2217" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2219" + style="opacity:0.76363635;fill:url(#linearGradient2221);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + <g + transform="translate(-4.376296,-35.18446)" + id="g2223"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2225" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2227" + style="opacity:0.76363635;fill:url(#linearGradient2229);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + <g + transform="translate(-10.09058,-18.75589)" + id="g2231"> + <path + transform="translate(1.519153,-9.101242)" + d="M 221.42857 448.79074 A 7.8571429 7.8571429 0 1 1 205.71428,448.79074 A 7.8571429 7.8571429 0 1 1 221.42857 448.79074 z" + sodipodi:ry="7.8571429" + sodipodi:rx="7.8571429" + sodipodi:cy="448.79074" + sodipodi:cx="213.57143" + id="path2233" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + transform="matrix(0.694719,0.000000,0.000000,0.671140,72.75487,102.2740)" + d="M 213.57143 498.43362 A 8.5714283 6.7857141 0 1 1 196.42857,498.43362 A 8.5714283 6.7857141 0 1 1 213.57143 498.43362 z" + sodipodi:ry="6.7857141" + sodipodi:rx="8.5714283" + sodipodi:cy="498.43362" + sodipodi:cx="205.00000" + id="path2235" + style="opacity:0.76363635;fill:url(#linearGradient2237);fill-opacity:1.0000000;stroke:none;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + </g> + </g> + <g + id="g2495"> + <path + d="M 293.95440 543.75037 A 36.870567 36.870567 0 1 1 220.21326,543.75037 A 36.870567 36.870567 0 1 1 293.95440 543.75037 z" + sodipodi:ry="36.870567" + sodipodi:rx="36.870567" + sodipodi:cy="543.75037" + sodipodi:cx="257.08383" + id="path2269" + style="opacity:0.76363635;fill:url(#radialGradient2432);fill-opacity:1.0;stroke:#001fb4;stroke-width:2.5000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" + sodipodi:type="arc" /> + <path + sodipodi:nodetypes="cc" + id="path2442" + d="M 261.07143,540.93361 L 276.42857,515.93361" + style="marker-end:url(#DistanceOut);fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#000000;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;marker-start:url(#DistanceIn)" /> + </g> + <g + id="g2488"> + <rect + ry="6.0537443" + rx="7.9696589" + y="672.68982" + x="201.78572" + height="45.416256" + width="44.285713" + id="rect2444" + style="opacity:1.0000000;fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:0.87994725;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" /> + <rect + ry="6.0537443" + rx="7.9696589" + y="651.69122" + x="211.50781" + height="6.4285712" + width="25.000000" + id="rect2446" + style="fill:#1f47c8;fill-opacity:1.0000000;stroke:none;stroke-width:0.91000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" /> + <path + sodipodi:nodetypes="ccccc" + id="path2454" + d="M 218.88524,657.59303 C 218.84041,666.53450 214.92091,669.21346 210.82587,673.54990 C 216.54681,673.22940 226.97201,673.48269 237.17251,673.46581 C 231.87967,668.64134 229.48501,665.82943 229.15320,657.44266 C 225.55877,657.39538 223.28625,657.54354 218.88524,657.59303 z " + style="stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000px;stroke:none;fill-rule:evenodd;fill-opacity:1.0000000;fill:#1f47c8" /> + <path + sodipodi:nodetypes="ccccc" + id="path2468" + d="M 219.64286,657.71932 C 219.13487,659.27039 220.79034,664.65615 212.76677,672.30090 C 211.35354,673.71413 220.76401,671.95767 225.44380,672.63639 C 226.08367,672.38044 225.63525,659.27435 224.28943,657.92853 C 223.81797,657.45707 219.89778,657.77031 219.64286,657.71932 z " + style="opacity:0.69090909;fill:url(#linearGradient2476);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000" /> + <rect + ry="6.0537443" + rx="7.9696593" + y="673.80872" + x="203.43246" + height="42.821247" + width="38.793331" + id="rect2478" + style="opacity:0.69090909;fill:url(#linearGradient2486);fill-opacity:1.0000000;stroke:none;stroke-width:0.91000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dashoffset:0.00000000;stroke-opacity:1.0000000" /> + </g> + </g> +</svg> diff --git a/kalzium/src/icons/htmlview/ionisation.png b/kalzium/src/icons/htmlview/ionisation.png Binary files differnew file mode 100644 index 00000000..ab1c1fb3 --- /dev/null +++ b/kalzium/src/icons/htmlview/ionisation.png diff --git a/kalzium/src/icons/htmlview/mass.png b/kalzium/src/icons/htmlview/mass.png Binary files differnew file mode 100644 index 00000000..50277dde --- /dev/null +++ b/kalzium/src/icons/htmlview/mass.png diff --git a/kalzium/src/icons/htmlview/meltingpoint.png b/kalzium/src/icons/htmlview/meltingpoint.png Binary files differnew file mode 100644 index 00000000..0f1823e5 --- /dev/null +++ b/kalzium/src/icons/htmlview/meltingpoint.png diff --git a/kalzium/src/icons/htmlview/radius.png b/kalzium/src/icons/htmlview/radius.png Binary files differnew file mode 100644 index 00000000..20258695 --- /dev/null +++ b/kalzium/src/icons/htmlview/radius.png diff --git a/kalzium/src/icons/htmlview/structure.png b/kalzium/src/icons/htmlview/structure.png Binary files differnew file mode 100644 index 00000000..75d77db0 --- /dev/null +++ b/kalzium/src/icons/htmlview/structure.png diff --git a/kalzium/src/icons/htmlview/style.css b/kalzium/src/icons/htmlview/style.css new file mode 100644 index 00000000..4ef1cd77 --- /dev/null +++ b/kalzium/src/icons/htmlview/style.css @@ -0,0 +1,83 @@ +body
+{
+ font-family:'arial';
+}
+
+/* The outer div */
+div.chemdata
+{
+ border: 1px solid rgb(50,80,150);
+ /*border: 1px solid rgb(0,0,0); */
+/* width:400px;*/
+ overflow:visible;;
+}
+
+/* The header div */
+div.chemdata div
+{
+ background-image:url('header.png');
+}
+
+/* The table inside the header div */
+div.chemdata div table
+{
+ margin:0px;
+ width:100%;
+ color:rgb(240,240,240);
+ font-weight:bold;
+}
+
+/* The td inside the header table */
+div.chemdata div table td
+{
+ padding-left:4px;
+}
+
+/* The second td inside the header table */
+div.chemdata div table td+td
+{
+ text-align:right;
+ font-size:80%;
+}
+
+
+/* The table containing the characterstics */
+table.characterstics
+{
+ background-image:url('characteristics.png');
+ background-repeat:repeat-y;
+ width:100%;
+}
+
+/* The td's inside the characterstics-table */
+table.characterstics td
+{
+ padding:3px;
+ padding-left:5px;
+ vertical-align:middle;
+ text-align:center;
+}
+
+table.isotopes td
+{
+ border-left:1px #000000 solid;
+ border-bottom:1px #000000 solid;
+}
+
+table.isotopes
+{
+ border-right:1px #000000 solid;
+ border-top:1px #000000 solid;
+}
+
+/* The second td inside the characterstics-table (text) */
+table.characterstics td+td
+{
+ text-align:left;
+}
+
+/* Bold text inside the td's of the characterstics-table */
+table.characterstics td b
+{
+ color:rgb(80,80,80);
+}
diff --git a/kalzium/src/isotope.cpp b/kalzium/src/isotope.cpp new file mode 100644 index 00000000..b15e38cc --- /dev/null +++ b/kalzium/src/isotope.cpp @@ -0,0 +1,76 @@ +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include "isotope.h" +#include "kalziumutils.h" + +#include <kdebug.h> +#include <klocale.h> + +Isotope::Isotope( int neutrons, int protones, double percentage, double weight, double halflife, QString format, double alphadecay, double betaplusdecay, double betaminusdecay, double ecdecay, double alphapercentage, double betapluspercentage, double betaminuspercentage, double ecpercentage, QString spin, QString magmoment) +{ + m_neutrons = neutrons; + m_protones = protones; + m_percentage = percentage; + m_halflife = halflife; + m_format = format; + m_weight = weight; + m_alphadecay = alphadecay; + m_betaplusdecay = betaplusdecay; + m_betaminusdecay = betaminusdecay; + m_ecdecay = ecdecay; + + m_spin = spin; + m_magmoment = magmoment; + + m_alphapercentage = alphapercentage; + m_betapluspercentage = betapluspercentage; + m_betaminuspercentage = betaminuspercentage; + m_ecpercentage = ecpercentage; +} + +QString Isotope::halflifeAsString() +{ + QString halflife; + + if ( !seconds() )//years + { + if ( m_halflife > 1000000 ) + halflife = i18n("%1 million years").arg( KalziumUtils::localizedValue( m_halflife/1000000.0, 2 ) ); + if ( m_halflife > 1000000000 ) + halflife = i18n("%1 billion years").arg( KalziumUtils::localizedValue( m_halflife/1000000000.0, 2 ) ); + else + halflife = i18n("%1 years").arg( KalziumUtils::localizedValue( m_halflife, 2 ) ); + } + else + { + if ( m_halflife < 120 ) + halflife = i18n("%1 seconds").arg( KalziumUtils::localizedValue( m_halflife, 2 ) ); + else if ( m_halflife > 1000 ) + halflife = i18n("%1 minutes").arg( KalziumUtils::localizedValue( m_halflife/60.0, 2 ) ); + else if ( m_halflife > 3600 ) + halflife = i18n("%1 hours").arg( KalziumUtils::localizedValue( m_halflife/( 60*60 ), 2 ) ); + if ( m_halflife > 86400 ) //one day + halflife = i18n("%1 days").arg( KalziumUtils::localizedValue( m_halflife/( 60*60*24 ), 2 ) ); + if ( m_halflife > ( 31536000 * 2 ) ) //two year + halflife = i18n("%1 years").arg( KalziumUtils::localizedValue( m_halflife/( 3600.0*365 ), 2 ) ); + } + + return halflife; +} diff --git a/kalzium/src/isotope.h b/kalzium/src/isotope.h new file mode 100644 index 00000000..feed345f --- /dev/null +++ b/kalzium/src/isotope.h @@ -0,0 +1,244 @@ +#ifndef ISOTOPE_H +#define ISOTOPE_H +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <qstring.h> + +/** + * @author Carsten Niehaus + * @author Jörg Buchwald + * + * This class represents an Isotope with all its properties + */ +class Isotope +{ + public: + Isotope( int neutrons, + int protones, + double percentage, + double weight, + double halflife, + QString format, + double alphadecay, + double betaplusdecay, + double betaminusdecay, + double ecdecay, + double alphapercentage, + double betapluspercentage, + double betaminuspercentage, + double ecpercentage, + QString spin, + QString magmoment); + + bool seconds() const{ + if ( m_format == "seconds" ) + return true; + else + return false; + } + + /** + * @return the halflife period of the isotope it if has one. The format + * is defined by seconds() + */ + double halflife() const{ + return m_halflife; + } + + double percentage() const{ + return m_percentage; + } + + /** + * @return the number of neutrons the isotope has + */ + int neutrons() const{ + return m_neutrons; + } + + /** + * @return the number of protones the isotope has + */ + int protones() const{ + return m_protones; + } + + /** + * @return the number of nucleons of ths isotope + */ + int nucleons() const{ + return m_protones+m_neutrons; + } + + /** + * the weight of the isotope + */ + double weight() const{ + return m_weight; + } + + /** + * @return the energy of isotope's alpha decay + */ + double alphadecay() const{ + return m_alphadecay; + } + + /** + * @return the energy of isotope's beta plus decay + */ + double betaplusdecay() const{ + return m_betaplusdecay; + } + + /** + * @return the energy of isotope's beta-minus decay + */ + double betaminusdecay() const{ + return m_betaminusdecay; + } + + /** + * @return the energy of isotope's EC- decay + */ + double ecdecay() const{ + return m_ecdecay; + } + + QString spin() const{ + return m_spin; + } + + QString magmoment() const{ + return m_magmoment; + } + + /** + * @return the halflife as a QString. The format will be + * appended, for example "seconds" or "years" depending + * on the timeframe + */ + QString halflifeAsString(); + + /** + * @return the percentage of the betaminus decay + */ + double betaminuspercentage() const{ + return m_betaminuspercentage; + } + + /** + * @return the percentage of the betaplus decay + */ + double betapluspercentage() const{ + return m_betapluspercentage; + } + + /** + * @return the percentage of the alpha decay + */ + double alphapercentage() const{ + return m_alphapercentage; + } + + /** + * @return the percentage of the EC decay + */ + double ecpercentage() const{ + return m_ecpercentage; + } + + private: + /** + * it is either "years" or "seconds". Usually we use seconds. But some + * isotopes have half-lifes of billion of years. This simply + * doesn't fit into a unsigned int or double + */ + QString m_format; + + /** + * the weight of the isotope + */ + double m_weight; + + /** + * the half-life of an isotope, usually in seconds + * @see m_format + */ + double m_halflife; + + /** + * If 95.2% of the isotopes are of this type, this + * variable will have the value 95.2 + */ + double m_percentage; + + /** + * the number of neutrons + */ + int m_neutrons; + + /** + * the number of protones + */ + int m_protones; + + ///Specify if the decay is the energy + double m_alphadecay; + ///Specify if the decay is the energy + double m_betaplusdecay; + ///Specify if the decay is the energy + double m_betaminusdecay; + ///Specify if the decay is the energy + double m_ecdecay; + + + /** + *spin and parity + */ + QString m_spin; + + /** + * magnetic moment + */ + QString m_magmoment; + + /** + * the percentage with which the istope decays as alpha-rays + */ + double m_alphapercentage; + + /** + * the percentage with which the istope decays as beta-plus + */ + double m_betapluspercentage; + + /** + * the percentage with which the istope decays as beta-minus + */ + double m_betaminuspercentage; + /** + * the percentage with which the istope decays as EC + */ + double m_ecpercentage; +}; + +#endif // ISOTOPE_H diff --git a/kalzium/src/kalzium.cpp b/kalzium/src/kalzium.cpp new file mode 100644 index 00000000..613377cd --- /dev/null +++ b/kalzium/src/kalzium.cpp @@ -0,0 +1,578 @@ +/*************************************************************************** + copyright : (C) 2003, 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "kalzium.h" + +#ifdef HAVE_FACILE +#include "eqchemview.h" +#endif + +#include "element.h" +#include "prefs.h" +#include "settings_colors.h" +#include "settings_misc.h" +#include "settings_units.h" +#include "elementdataviewer.h" +#include "detailinfodlg.h" +#include "periodictableview.h" +#include "molcalcwidget.h" +#include "detailedgraphicaloverview.h" +#include "timewidget_impl.h" +#include "somwidget_impl.h" +#include "kalziumdataobject.h" +#include "kalziumutils.h" +#include "config.h" + +#include <qdockwindow.h> +#include <qlayout.h> +#include <qtoolbox.h> +#include <qslider.h> +#include <qscrollview.h> +#include <qspinbox.h> + +#include <kconfigdialog.h> +#include <kiconloader.h> +#include <klocale.h> +#include <kdebug.h> +#include <kaction.h> +#include <kapplication.h> +#include <kstatusbar.h> +#include <kstandarddirs.h> +#include <kdialogbase.h> +#include <knuminput.h> + +#include <kdeeduglossary.h> + +#define PerodicTableView_MARGIN 5 +#define IDS_ELEMENTINFO 7 + +Kalzium::Kalzium() + : KMainWindow( 0, "Kalzium" ) +{ + // reading the elements from file + KalziumDataObject::instance(); + + QWidget *centralWidget = new QWidget( this, "centralWidget" ); + m_pCentralLayout = new QVBoxLayout( centralWidget, PerodicTableView_MARGIN, -1, "CentralLayout" ); + + QScrollView *helperSV = new QScrollView(centralWidget); + m_pCentralLayout->addWidget(helperSV); + helperSV->viewport()->setPaletteBackgroundColor(paletteBackgroundColor()); + helperSV->setFrameShape(QFrame::NoFrame); + + m_PerodicTableView = new PerodicTableView( helperSV->viewport(), "PerodicTableView"); + helperSV->addChild( m_PerodicTableView ); + m_infoDialog = 0; + m_toolboxCurrent = 0; + + connect( m_PerodicTableView, SIGNAL( ElementClicked( int ) ), this, SLOT( openInformationDialog( int ) )); + connect( m_PerodicTableView, SIGNAL( MouseOver( int ) ), this, SLOT( slotStatusbar( int ) )); + + // layouting + setCentralWidget( centralWidget ); + centralWidget->show(); + + setupSidebars(); + setupActions(); + + // adding the libkdeedu catalog + KGlobal::locale()->insertCatalogue( "libkdeedu" ); + + // creating the glossary dialog and loading the glossaries we have + m_glossarydlg = new GlossaryDialog( true, this, "glossary" ); + QString dir = KGlobal::dirs()->findResourceDir( "data", "kalzium/data/" ); + QString picturepath = dir + "kalzium/data/bg.jpg"; + KURL u = dir + "kalzium/data/knowledge.xml"; + Glossary *g = Glossary::readFromXML( u ); + g->setName( i18n( "Knowledge" ) ); + g->setBackgroundPicture( picturepath ); + m_glossarydlg->addGlossary( g ); + u = dir + "kalzium/data/tools.xml"; + g = Glossary::readFromXML( u, dir+"kalzium/data/toolpics/" ); + g->setName( i18n( "Tools" ) ); + g->setBackgroundPicture( picturepath ); + m_glossarydlg->addGlossary( g ); + + setupStatusBar(); +} + +void Kalzium::setupActions() +{ + m_actionNoScheme = new KToggleAction(i18n("&No Color Scheme"), 0, this, SLOT(slotNoLook()), actionCollection(), "view_look_noscheme"); + + // the actions for the color schemes + m_actionGroups = new KToggleAction(i18n("Show &Groups"), 0, this, SLOT(slotLookGroups()), actionCollection(), "view_look_groups"); + m_actionBlocks = new KToggleAction(i18n("Show &Blocks"), 0, this, SLOT(slotLookBlocks()), actionCollection(), "view_look_blocks"); + m_actionAcid = new KToggleAction(i18n("Show &Acid Behavior"), 0, this, SLOT(slotLookAcidBehavior()), actionCollection(), "view_look_acid"); + m_actionFamily = new KToggleAction(i18n("Show &Family"), 0, this, SLOT(slotLookFamily()), actionCollection(), "view_look_family"); + m_actionCrystal = new KToggleAction(i18n("Show &Crystal Structures"), 0, this, SLOT(slotLookCrystal()), actionCollection(), "view_look_crystal"); + + //the actions for switching PerodicTableView + QStringList gradientlist; + gradientlist.append(i18n("Atomic Radius")); + gradientlist.append(i18n("Covalent Radius")); + gradientlist.append(i18n("van der Waals Radius")); + gradientlist.append(i18n("Atomic Mass")); + gradientlist.append(i18n("Density")); + gradientlist.append(i18n("Boiling Point")); + gradientlist.append(i18n("Melting Point")); + gradientlist.append(i18n("Electronegativity")); + gradientlist.append(i18n("Electron Affinity")); + gradient_action = new KSelectAction(i18n("&Gradient"), 0, this, 0, actionCollection(), "view_look_gradmenu"); + gradient_action->setItems(gradientlist); + connect (gradient_action, SIGNAL(activated(int)), this, SLOT(slotSwitchtoGradient(int))); + + // the actions for switching PerodicTableView + QStringList numlist; + numlist.append(i18n("No N&umeration")); + numlist.append(i18n("Show &IUPAC")); + numlist.append(i18n("Show &CAS")); + numlist.append(i18n("Show &Old IUPAC")); + numeration_action = new KSelectAction (i18n("&Numeration"), 0, this, 0, actionCollection(), "view_numerationtype"); + numeration_action->setItems(numlist); + numeration_action->setCurrentItem(Prefs::numeration()); + connect (numeration_action, SIGNAL(activated(int)), this, SLOT(slotSwitchtoNumeration(int))); + + m_SidebarAction = new KAction(i18n("Show &Sidebar"), "sidebar", 0, this, SLOT(slotShowHideSidebar()), actionCollection(), "view_sidebar"); + +#ifdef HAVE_FACILE + m_EQSolverAction = new KAction(i18n("&Equation Solver..."), "eqchem", 0, this, SLOT(slotShowEQSolver()), actionCollection(), "tools_eqsolver"); +#endif + + // tools actions + m_pPlotAction = new KAction(i18n("&Plot Data..."), "plot", 0, this, SLOT(slotPlotData()), actionCollection(), "tools_plotdata"); + m_pGlossaryAction = new KAction(i18n("&Glossary..."), "glossary", 0, this, SLOT(slotGlossary()), actionCollection(), "tools_glossary"); + + // other period view options + m_pLegendAction = new KAction(i18n("Show &Legend"), "legend", 0, this, SLOT(slotShowLegend()), actionCollection(), "view_legend"); + m_pTooltipAction = new KAction(i18n("Show &Tooltip"), "tooltip", 0, this, SLOT(slotEnableTooltips()), actionCollection(), "view_tooltip"); + + // the standard actions + KStdAction::preferences(this, SLOT(showSettingsDialog()), actionCollection()); + KStdAction::quit( kapp, SLOT (closeAllWindows()),actionCollection() ); + + slotShowScheme( Prefs::colorschemebox() ); + slotSwitchtoNumeration( Prefs::numeration() ); + + if ( Prefs::showsidebar() ) { + m_dockWin->show(); + m_SidebarAction->setText( i18n( "Hide &Sidebar" ) ); + } + else { + m_dockWin->hide(); + m_SidebarAction->setText( i18n( "Show &Sidebar" ) ); + } + + if ( Prefs::showlegend() ) { + m_PerodicTableView->showLegend(true); + m_pLegendAction->setText( i18n( "Hide &Legend" ) ); + } else + { + m_PerodicTableView->showLegend(false); + m_pLegendAction->setText( i18n( "Show &Legend" ) ); + } + + if ( Prefs::tooltip() ) { + m_PerodicTableView->setTooltipsEnabled( true ); + m_pTooltipAction->setText( i18n( "Hide &Tooltips" ) ); + } else + { + m_PerodicTableView->setTooltipsEnabled( false ); + m_pTooltipAction->setText( i18n( "Show &Tooltips" ) ); + } + + // set the shell's ui resource file + setXMLFile("kalziumui.rc"); + setupGUI(); +} + +void Kalzium::setupSidebars() +{ + m_dockWin = new QDockWindow( this ); + m_dockWin->setNewLine( true ); + m_dockWin->setFixedExtentWidth( 220 ); + m_dockWin->setResizeEnabled( true ); + m_dockWin->setFrameShape( QFrame::ToolBarPanel ); + m_dockWin->setCaption( i18n( "Sidebar" ) ); + m_dockWin->setCloseMode( QDockWindow::Always ); + + QToolBox *m_toolbox = new QToolBox( m_dockWin ); + m_dockWin->setWidget( m_toolbox ); + + QWidget *fake = new QWidget( m_dockWin ); + QVBoxLayout *lay = new QVBoxLayout( fake, 5 ); + lay->activate(); + m_detailWidget = new DetailedGraphicalOverview( fake, "DetailedGraphicalOverview" ); + m_detailWidget->setMinimumSize( 200, m_detailWidget->minimumSize().height() ); + connect( m_PerodicTableView, SIGNAL( MouseOver( int ) ), this, SLOT( slotSelectedNumber( int ) )); + lay->addWidget( m_detailWidget ); + lay->addItem( new QSpacerItem( 10, 10, QSizePolicy::Fixed, QSizePolicy::MinimumExpanding ) ); + m_toolbox->addItem( fake, SmallIcon( "overview" ), i18n( "Overview" ) ); + + m_calcWidget = new MolcalcWidget( m_dockWin, "molcalcwidget" ); + m_toolbox->addItem( m_calcWidget, SmallIcon( "calculate" ), i18n( "Calculate" ) ); + + m_timeWidget = new TimeWidgetIMPL( this, "TimeWidget" ); + connect( m_timeWidget->time_slider, SIGNAL( valueChanged( int ) ), + m_PerodicTableView, SLOT( setDate( int ) ) ); + connect( m_timeWidget->time_slider, SIGNAL( valueChanged( int ) ), + m_timeWidget, SLOT( slotChanged( int ) ) ); + connect( m_timeWidget->Number1, SIGNAL( valueChanged( int ) ), + m_timeWidget, SLOT( slotChanged( int ) ) ); + m_toolbox->addItem( m_timeWidget, SmallIcon( "timeline" ), i18n( "Timeline" ) ); + + m_somWidget = new SOMWidgetIMPL( this, "somWidget" ); + connect( m_somWidget->temp_slider, SIGNAL( valueChanged( int ) ), + m_PerodicTableView, SLOT( setTemperature( int ) ) ); + m_toolbox->addItem( m_somWidget, SmallIcon( "statematter" ), i18n( "State of Matter" ) ); + + connect( m_toolbox, SIGNAL( currentChanged( int ) ), this, SLOT( slotToolboxCurrentChanged( int ) ) ); + + moveDockWindow( m_dockWin, DockLeft ); + setDockEnabled( /*m_dockWin, */DockTop, false ); + setDockEnabled( /*m_dockWin, */DockBottom, false ); + m_dockWin->hide(); + connect( m_dockWin, SIGNAL(visibilityChanged(bool)), this, SLOT(slotSidebarVisibilityChanged(bool))); + +} + +void Kalzium::slotGlossary() +{ + m_glossarydlg->show(); +} + +void Kalzium::slotShowEQSolver() +{ +#ifdef HAVE_FACILE + EQChemDialog *dlg = new EQChemDialog( this ); + + QWidget *page = new QWidget( dlg ); + dlg->setMainWidget( page ); + QVBoxLayout *vbox = new QVBoxLayout( page , 0, KDialogBase:: spacingHint() ); + + eqchemView *eqsolver = new eqchemView( page ); + eqsolver->setMinimumSize( 600,400 ); + + vbox->addWidget( eqsolver ); + connect(dlg, SIGNAL(applyClicked()), eqsolver, SLOT(compute())); + dlg->show(); +#endif +} + +void Kalzium::slotPlotData() +{ + ElementDataViewer *edw = new ElementDataViewer( this, "edw" ); + edw->show(); +} + +void Kalzium::slotEnableTooltips() +{ + bool enabled = m_PerodicTableView->tooltipsEnabled(); + enabled = !enabled; + + if ( enabled ) + m_pTooltipAction->setText( i18n( "Hide &Tooltips" ) ); + else + m_pTooltipAction->setText( i18n( "Show &Tooltips" ) ); + + m_PerodicTableView->setTooltipsEnabled( enabled ); + + Prefs::setTooltip( enabled ); + Prefs::writeConfig(); +} + +void Kalzium::slotShowLegend() +{ + if(m_PerodicTableView->showLegend()) + { + m_PerodicTableView->showLegend(false); + m_pLegendAction->setText( i18n( "Show &Legend" ) ); + } + else + { + m_PerodicTableView->showLegend(true); + m_pLegendAction->setText( i18n( "Hide &Legend" ) ); + } + m_PerodicTableView->update(); + + //save the settings + Prefs::setShowlegend( m_PerodicTableView->showLegend() ); + Prefs::writeConfig(); + + //JH: redraw the full table next time + setFullDraw(); +} + +void Kalzium::slotShowHideSidebar() +{ + if( m_dockWin->isShown() ) + { + m_dockWin->hide(); + Prefs::setShowsidebar( false ); + m_SidebarAction->setText( i18n( "Show &Sidebar" ) ); + } + else + { + m_dockWin->show(); + Prefs::setShowsidebar( true ); + m_SidebarAction->setText( i18n( "Hide &Sidebar" ) ); + } + + //save the settings + Prefs::writeConfig(); +} + +void Kalzium::slotShowScheme(int i) +{ + switch ( i ) + { + case PerodicTableView::GROUPS: + m_actionGroups->setChecked( true ); + m_PerodicTableView->setLook( PerodicTableView::GROUPS ); + break; + case PerodicTableView::BLOCK: + m_actionBlocks->setChecked( true ); + m_PerodicTableView->setLook( PerodicTableView::BLOCK ); + break; + case PerodicTableView::ACIDIC: + m_actionAcid->setChecked( true ); + m_PerodicTableView->setLook( PerodicTableView::ACIDIC ); + break; + case PerodicTableView::FAMILY: + m_actionFamily->setChecked( true ); + m_PerodicTableView->setLook( PerodicTableView::FAMILY ); + break; + case PerodicTableView::CRYSTAL: + m_actionCrystal->setChecked( true ); + m_PerodicTableView->setLook( PerodicTableView::CRYSTAL ); + break; + case PerodicTableView::GRADIENT: + gradient_action->setCurrentItem( Prefs::gradient()-1 ); + m_PerodicTableView->setLook( PerodicTableView::GRADIENT, Prefs::gradient() ); + break; + case PerodicTableView::NOCOLOUR: + default: + m_actionNoScheme->setChecked( true ); + m_PerodicTableView->setLook( PerodicTableView::NOCOLOUR ); + } +} + +void Kalzium::slotSwitchtoGradient( int index ) +{ + m_PerodicTableView->setLook( PerodicTableView::GRADIENT, index + 1 ); + m_actionNoScheme->setChecked( false ); + m_actionGroups->setChecked( false ); + m_actionBlocks->setChecked( false ); + m_actionAcid->setChecked( false ); + m_actionFamily->setChecked( false ); + m_actionCrystal->setChecked( false ); + m_pLegendAction->setEnabled( false ); + + Prefs::setGradient(index + 1); + Prefs::writeConfig(); +} + +void Kalzium::slotSwitchtoNumeration( int index ) +{ + m_PerodicTableView->setNumerationType( ( PerodicTableView::NUMERATIONTYPE )index ); + Prefs::setNumeration(index); + Prefs::writeConfig(); + + //JH: redraw the full table next time + setFullDraw(); +} + +void Kalzium::showSettingsDialog() +{ + if (KConfigDialog::showDialog("settings")) + return; + + //KConfigDialog didn't find an instance of this dialog, so lets create it : + KConfigDialog *dialog = new KConfigDialog(this,"settings", Prefs::self()); + connect( dialog, SIGNAL( settingsChanged() ), this , SLOT( slotUpdateSettings() ) ); + connect( dialog, SIGNAL( settingsChanged() ), m_somWidget, SLOT( reloadUnits() ) ); + dialog->addPage( new setColors( 0, "colors_page"), i18n("Colors"), "colorize"); + dialog->addPage( new setupUnits( 0, "units_page"), i18n("Units"), "gear"); + dialog->addPage( new setupMisc( 0, "miscpage" ), i18n( "Miscellaneous" ), "misc" ); + dialog->show(); +} + +void Kalzium::slotUpdateSettings() +{ + m_PerodicTableView->reloadColours(); + m_PerodicTableView->setFullDraw(); +} + +void Kalzium::setupStatusBar() +{ + statusBar()->insertItem( "" , IDS_ELEMENTINFO, 1, false ); + statusBar()->setItemAlignment( IDS_ELEMENTINFO, AlignRight ); + statusBar()->show(); +} + +void Kalzium::slotStatusbar( int num ) +{ + Element *e = KalziumDataObject::instance()->element( num ); + statusBar()->changeItem( i18n( "For example: \"Carbon (6), Mass: 12.0107 u\"", "%1 (%2), Mass: %3 u" ).arg( e->elname() ).arg(e->number() ).arg( KalziumUtils::localizedValue( e->mass(), 6 ) ) , IDS_ELEMENTINFO ); +} + +void Kalzium::openInformationDialog( int number ) +{ + if ( m_PerodicTableView->showTooltip() ) + { + kdDebug() << "Handling Information Dialog" << endl; + + if (m_infoDialog) + m_infoDialog->setElement(KalziumDataObject::instance()->element(number)); + else + { + m_infoDialog = new DetailedInfoDlg( + KalziumDataObject::instance()->element(number), + this, "detailedDlg" ); + + // Remove the selection when this dialog finishes or hides. + connect(m_infoDialog, SIGNAL(hidden()), + m_PerodicTableView, SLOT(unSelect())); + connect(m_infoDialog, SIGNAL(elementChanged(int)), + m_PerodicTableView, SLOT(selectElement(int))); + } + m_infoDialog->show(); + } +} + +void Kalzium::slotNoLook() +{ + m_PerodicTableView->setLook( PerodicTableView::NOCOLOUR ); + gradient_action->setCurrentItem( -1 ); + m_actionGroups->setChecked( false ); + m_actionBlocks->setChecked( false ); + m_actionAcid->setChecked( false ); + m_actionFamily->setChecked( false ); + m_actionCrystal->setChecked( false ); + m_pLegendAction->setEnabled( true ); +} + +void Kalzium::slotLookGroups() +{ + m_PerodicTableView->setLook( PerodicTableView::GROUPS ); + gradient_action->setCurrentItem( -1 ); + m_actionNoScheme->setChecked( false ); + m_actionBlocks->setChecked( false ); + m_actionAcid->setChecked( false ); + m_actionFamily->setChecked( false ); + m_actionCrystal->setChecked( false ); + m_pLegendAction->setEnabled( true ); +} + +void Kalzium::slotLookBlocks() +{ + m_PerodicTableView->setLook( PerodicTableView::BLOCK ); + gradient_action->setCurrentItem( -1 ); + m_actionNoScheme->setChecked( false ); + m_actionGroups->setChecked( false ); + m_actionAcid->setChecked( false ); + m_actionFamily->setChecked( false ); + m_actionCrystal->setChecked( false ); + m_pLegendAction->setEnabled( true ); +} + +void Kalzium::slotLookAcidBehavior() +{ + m_PerodicTableView->setLook( PerodicTableView::ACIDIC ); + gradient_action->setCurrentItem( -1 ); + m_actionNoScheme->setChecked( false ); + m_actionGroups->setChecked( false ); + m_actionBlocks->setChecked( false ); + m_actionFamily->setChecked( false ); + m_actionCrystal->setChecked( false ); + m_pLegendAction->setEnabled( true ); +} + +void Kalzium::slotLookFamily() +{ + m_PerodicTableView->setLook( PerodicTableView::FAMILY ); + gradient_action->setCurrentItem( -1 ); + m_actionNoScheme->setChecked( false ); + m_actionGroups->setChecked( false ); + m_actionBlocks->setChecked( false ); + m_actionAcid->setChecked( false ); + m_actionCrystal->setChecked( false ); + m_pLegendAction->setEnabled( true ); +} + +void Kalzium::slotLookCrystal() +{ + m_PerodicTableView->setLook( PerodicTableView::CRYSTAL ); + gradient_action->setCurrentItem( -1 ); + m_actionNoScheme->setChecked( false ); + m_actionGroups->setChecked( false ); + m_actionBlocks->setChecked( false ); + m_actionAcid->setChecked( false ); + m_actionFamily->setChecked( false ); + m_pLegendAction->setEnabled( true ); +} + +void Kalzium::setFullDraw() +{ + m_PerodicTableView->setFullDraw(); +} + +void Kalzium::slotToolboxCurrentChanged( int id ) +{ + m_PerodicTableView->unSelect(); + m_PerodicTableView->setTimeline( false ); + m_PerodicTableView->activateSOMMode( false ); + + switch ( id ) + { + case 0: // nothing + break; + case 1: // molcalc + break; + case 2: // timeline + m_PerodicTableView->setTimeline( true ); + m_PerodicTableView->setDate( m_timeWidget->time_slider->value() ); + break; + case 3: // state of matter + m_PerodicTableView->activateSOMMode( true ); + m_PerodicTableView->setTemperature( m_somWidget->temp_slider->value() ); + break; + } + if ( m_dockWin->isShown() ) + m_toolboxCurrent = id; +} + +void Kalzium::slotSelectedNumber( int num ) +{ + m_detailWidget->setElement( KalziumDataObject::instance()->element( num ) ); +} + +void Kalzium::slotSidebarVisibilityChanged( bool visible ) +{ + if( visible ) + slotToolboxCurrentChanged( m_toolboxCurrent ); + else + slotToolboxCurrentChanged( 0 ); + + //save the settings + Prefs::setShowsidebar( m_dockWin->isShown() ); + Prefs::writeConfig(); + + //JH: redraw the full table next time + setFullDraw(); +} + +Kalzium::~Kalzium() +{ +} + +#include "kalzium.moc" diff --git a/kalzium/src/kalzium.desktop b/kalzium/src/kalzium.desktop new file mode 100644 index 00000000..840cf11d --- /dev/null +++ b/kalzium/src/kalzium.desktop @@ -0,0 +1,128 @@ +# KDE Config File +[Desktop Entry] +Type=Application +Exec=kalzium -caption "%c" %i %m +Icon=kalzium +DocPath=kalzium/index.html +Comment=KDE Periodic Table of Elements +Comment[be]=Перыядычная табліца элементаў KDE +Comment[bg]=Таблица на химическите елементи +Comment[bn]=কে.ডি.ই. উপস্থাপিত পদার্থের পর্যায় সারণী +Comment[bs]=KDE periodna tablica elemenata +Comment[ca]=Taula periòdica dels elements per a KDE +Comment[cs]=Periodická tabulka prvků pro KDE +Comment[csb]=Cządowi ùstôw pierwińców +Comment[da]=Det periodiske system af grundstoffer for KDE +Comment[de]=Periodensystem der Elemente +Comment[el]=Περιοδικός πίνακας των στοιχείων του KDE +Comment[eo]=KDE perioda tabelo de la elementoj +Comment[es]=Tabla periódica de los elementos de KDE +Comment[et]=KDE keemiliste elementide tabel +Comment[eu]=Elemtuen taula periodikoa +Comment[fa]=جدول تناوبی عناصر KDE +Comment[fi]=Alkuaineiden jaksollinen järjestelmä +Comment[fr]=Classification périodique des éléments de KDE +Comment[ga]=Tábla Peiriadach KDE +Comment[gl]=Táboa periódica dos elementos para KDE +Comment[he]=הטבלה המחזורית של היסודות של KDE +Comment[hr]=KDE periodni sustav elemenata +Comment[hu]=KDE-alapú periódusos rendszer +Comment[is]=KDE Lotukerfi +Comment[it]=Tavola periodica degli elementi per KDE +Comment[ja]=元素周期表 +Comment[ka]=ელემენტების პერიოდული ცხრილი +Comment[km]=តារាងខួបនៃធាតុគីមីរបស់ KDE +Comment[lt]=KDE periodinė elementų lentelė +Comment[ms]=Jadual Berkala Elemen KDE +Comment[nb]=Grunnstoffenes periodiske system i KDE +Comment[nds]=Periodensysteem vun de Elementen för KDE +Comment[ne]=तत्वको KDE आवधिक तालिका +Comment[nl]=Periodieke Tabel der Elementen +Comment[nn]=Det periodiske system for KDE +Comment[pa]=ਤੱਤਾਂ ਲਈ KDE ਆਵਰਤੀ ਸਾਰਣੀ +Comment[pl]=Układ okresowy pierwiastków dla KDE +Comment[pt]=Tabela Periódica de Elementos do KDE +Comment[pt_BR]=Tabela periódica dos elementos do KDE +Comment[ru]=Периодическая система Менделеева +Comment[sk]=KDE Periodická tabuľka prvkov +Comment[sl]=Periodni sistem elementov +Comment[sr]=Периодни систем елемената за KDE +Comment[sr@Latn]=Periodni sistem elemenata za KDE +Comment[sv]=Periodiska systemet för KDE +Comment[tr]=Elementlerin Periyodik Cetveli +Comment[uk]=Періодична таблиця елементів +Comment[vi]=Bảng Tuần hoàn các Nguyên tố Hoá học KDE +Comment[zh_CN]=KDE 的元素周期表 +Comment[zh_TW]=KDE 元素週期表 +Terminal=false +Name=Kalzium +Name[bn]=ক্যালজিয়াম +Name[csb]=Kalzium (Programa do ùczbë pierwińców) +Name[eo]=Kalziumo +Name[fo]=Kalsium +Name[hi]=के-एल्जियम +Name[lv]=Kalcium +Name[mk]=Калциум +Name[mn]=Кальци +Name[ne]=काल्जिउम +Name[pa]=ਕੈਲਜ਼ੀਅਮ +Name[pl]=Kalzium (Program do nauki pierwiastków chemicznych) +Name[ta]=கால்சியம் +GenericName=Periodic Table of Elements +GenericName[af]=Periodieke Tabel van Elemente +GenericName[ar]=الجدول الدوري للعناصر +GenericName[be]=Перыядычная табліца элементаў +GenericName[bg]=Таблица на химическите елементи +GenericName[bn]=পদার্থের পর্যায় সারণী +GenericName[bs]=Periodna tablica elemenata +GenericName[ca]=Taula periòdica dels elements +GenericName[cs]=Periodická tabulka +GenericName[csb]=Cządowi ùstôw pierwińców +GenericName[cy]=Tabl yr Elfennau +GenericName[da]=Grundstoffernes periodiske system +GenericName[de]=Elektronisches Periodensystem +GenericName[el]=Περιοδικός πίνακας των στοιχείων +GenericName[eo]=Perioda tabelo de la elementoj +GenericName[es]=Tabla periódica de los elementos +GenericName[et]=Keemiliste elementide tabel +GenericName[eu]=Elemtuen taula periodikoa +GenericName[fa]=جدول تناوبی عناصر +GenericName[fi]=Alkuaineiden jaksollinen järjestelmä +GenericName[fr]=Classification périodique des éléments +GenericName[ga]=An Tábla Peiriadach +GenericName[gl]=Táboa Periódica dos Elementos +GenericName[he]=הטבלה המחזורית של היסודות +GenericName[hi]=तत्वों के पीरियाडिक टेबल +GenericName[hr]=Periodni sustav elemenata +GenericName[hu]=Periódusos rendszer +GenericName[is]=Lotukerfið +GenericName[it]=Tavola periodica degli elementi +GenericName[ja]=元素周期表 +GenericName[ka]=ელემენტების პერიოდული ცხრილი +GenericName[km]=តារាងខួមនៃធាតុគីមី +GenericName[lt]=Periodinė elementų lentelė +GenericName[mk]=Периодична табела на елементи +GenericName[ms]=Jadual Berkala bagi Elemen +GenericName[nb]=Grunnstoffenes periodiske system +GenericName[nds]=Periodensysteem vun de Elementen +GenericName[ne]=तत्वको आवधिक तालिका +GenericName[nl]=Periodieke Tabel der Elementen +GenericName[nn]=Det periodiske systemet +GenericName[pa]=ਇਕਾਈਆਂ ਦੀ ਆਵਰਤੀ ਸਾਰਣੀ +GenericName[pl]=Tablica okresowa pierwiastków +GenericName[pt]=Tabela Periódica de Elementos +GenericName[pt_BR]=Tabela periódica dos elementos +GenericName[ru]=Периодическая система Менделеева +GenericName[sk]=Periodická tabuľka prvkov +GenericName[sl]=Periodna tabela elementov +GenericName[sr]=Периодни систем елемената +GenericName[sr@Latn]=Periodni sistem elemenata +GenericName[sv]=Periodiska systemet +GenericName[ta]=பொருட்களின் கால அட்டவணை +GenericName[tg]=Системаи даври элементҳо +GenericName[tr]=Periyodik Cetvel +GenericName[uk]=Періодична таблиця елементів +GenericName[vi]=Bảng Tuần hoàn các Nguyên tố +GenericName[zh_CN]=元素周期表 +GenericName[zh_TW]=元素週期表 +Categories=Qt;KDE;Education;Science; diff --git a/kalzium/src/kalzium.h b/kalzium/src/kalzium.h new file mode 100644 index 00000000..5837607b --- /dev/null +++ b/kalzium/src/kalzium.h @@ -0,0 +1,189 @@ +/*************************************************************************** + copyright : (C) 2003, 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef _KALZIUM_H_ +#define _KALZIUM_H_ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <kmainwindow.h> + +class KSelectAction; +class KToggleAction; +class QuizsettingsDlg; +class SliderWidget; +class QToolBox; +class QVBoxLayout; +class QDockWindow; +class TempSlider; +class DetailedInfoDlg; +class PerodicTableView; +class MolcalcWidget; +class DetailedGraphicalOverview; +class TimeWidgetIMPL; +class SOMWidgetIMPL; +class GlossaryDialog; + +/** + * @short Application Main Window + * @author Carsten Niehaus <cniehaus@kde.org> + * @version 1.2 + * + * This class connects the parts of kalzium. All actions will + * be set, the menu generated and so on. + */ +class Kalzium : public KMainWindow +{ + Q_OBJECT + public: + /** + * Default Constructor + */ + Kalzium(); + + /** + * Default Destructor + */ + virtual ~Kalzium(); + + private: + class privatedata; + friend class privatedata; + privatedata* pd; + + DetailedInfoDlg *m_infoDialog; + + /** + * this pointer points to the PerodicTableView. + */ + PerodicTableView *m_PerodicTableView; + + /** + *initialize actions + */ + void setupActions(); + + /** + *initialize the sidebars + */ + void setupSidebars(); + + /** + * Signal the PerodicTableView that it should do a full draw operation + */ + void setFullDraw(); + + /** + * all KActions Kalzium uses + */ + KSelectAction *gradient_action; + KSelectAction *numeration_action; + KAction *m_pPlotAction, + *m_pGlossaryAction; + + KAction *m_pTooltipAction; + KAction *m_pLegendAction; + KAction *m_SidebarAction; + KAction *m_EQSolverAction; + + KToggleAction *m_actionNoScheme; + KToggleAction *m_actionGroups; + KToggleAction *m_actionBlocks; + KToggleAction *m_actionAcid; + KToggleAction *m_actionFamily; + KToggleAction *m_actionCrystal; + + /** + * the layout of the central Widget ( CentralWidget ) + */ + QVBoxLayout *m_pCentralLayout; + + MolcalcWidget *m_calcWidget; + + TimeWidgetIMPL *m_timeWidget; + + SOMWidgetIMPL *m_somWidget; + + DetailedGraphicalOverview *m_detailWidget; + + QDockWindow *m_dockWin; + QToolBox *m_toolbox; + int m_toolboxCurrent; + + GlossaryDialog *m_glossarydlg; + + private slots: + /** + * opens the information dialog for the element @p number + */ + void openInformationDialog( int number ); + + void slotStatusbar( int num ); + void setupStatusBar(); + + + /** + * this slot switches Kalzium to the selected color scheme + */ + void slotShowScheme(int); + + void slotShowEQSolver(); + + void slotShowLegend(); + + /** + * Hide or show the tooltips + */ + void slotEnableTooltips(); + + /** + * start the glossary + */ + void slotGlossary(); + + void slotSwitchtoNumeration(int); + + /** + * this will make the periodic table display the gradient + * defined by @p int gradient + */ + void slotSwitchtoGradient(int gradient); + + void slotPlotData(); + + void slotUpdateSettings(); + + void slotNoLook(); + + void slotLookGroups(); + void slotLookBlocks(); + void slotLookAcidBehavior(); + void slotLookFamily(); + void slotLookCrystal(); + + /** + * These slots are for the standard actions + */ + void showSettingsDialog(); + + void slotToolboxCurrentChanged(int); + + void slotSelectedNumber(int); + + void slotShowHideSidebar(); + + void slotSidebarVisibilityChanged(bool); +}; + +#endif // _KALZIUM_H_ diff --git a/kalzium/src/kalzium.kcfg b/kalzium/src/kalzium.kcfg new file mode 100644 index 00000000..d8f1321e --- /dev/null +++ b/kalzium/src/kalzium.kcfg @@ -0,0 +1,220 @@ +<?xml version="1.0" encoding="UTF-8"?> +<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 + http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > + <kcfgfile name="kalziumrc"/> + <group name="Periodic Table"> + <entry name="schemaPSE" type="Int"> + <label>Selects the PSE</label> + <whatsthis>Select the PSE you want</whatsthis> + <default>0</default> + </entry> + <entry name="colorschemebox" type="Int"> + <label>Selects the default color scheme</label> + <whatsthis>Select the color scheme you prefer by clicking on the corresponding radio button</whatsthis> + <default>1</default> + </entry> + <entry name="gradient" type="Int"> + <label>Selects the default gradient</label> + <whatsthis>Select the gradient you want by clicking on the menu entry</whatsthis> + <default>1</default> + </entry> + <entry name="numeration" type="Int"> + <label>Selects the default numeration (IUPAC)</label> + <whatsthis>Select the numeration you want</whatsthis> + <default>1</default> + </entry> + <entry name="showlegend" type="Bool"> + <label>Show or hide the legend</label> + <whatsthis>Show or hide the legend</whatsthis> + <default>true</default> + </entry> + <entry name="tooltip" type="Bool"> + <label>Show or hide the tooltips</label> + <whatsthis>Show or hide the tooltips</whatsthis> + <default>true</default> + </entry> + <entry name="pselook" type="Int"> + <label>whether the atomic mass will be displayed in the PSE-Table</label> + <whatsthis>Display the atomic mass in the PSE</whatsthis> + <default>0</default> + </entry> + </group> + <group name="Colors"> + <entry name="noscheme" type="Color"> + <label>Selects the color if no scheme is selected</label> + <whatsthis>Selects the color of the elements if no scheme is selected</whatsthis> + <default>#b4adff</default> + </entry> + <entry name="color_liquid" type="Color"> + <label>Selects the color of liquid elements</label> + <whatsthis>Selects the color of liquid elements</whatsthis> + <default>#b4adff</default> + </entry> + <entry name="color_solid" type="Color"> + <label>Selects the color of solid elements</label> + <whatsthis>Selects the color of solid elements</whatsthis> + <default>#FF5255</default> + </entry> + <entry name="color_vapor" type="Color"> + <label>Selects the color of vaporous elements</label> + <whatsthis>Selects the color of vaporous elements</whatsthis> + <default>#5CFF46</default> + </entry> + <entry name="color_radioactive" type="Color"> + <label>Selects the color of radioactive elements</label> + <whatsthis>Selects the color of radioactive elements</whatsthis> + <default>#FFFFFF</default> + </entry> + <entry name="color_artificial" type="Color"> + <label>Selects the color of artificial elements</label> + <whatsthis>Selects the color of artificial elements</whatsthis> + <default>#FFA94E</default> + </entry> + <entry name="block_s" type="Color"> + <label>Selects the color of the elements in block s</label> + <whatsthis>Selects the color of the elements in block s</whatsthis> + <default>#be72ee</default> + </entry> + <entry name="block_p" type="Color"> + <label>Selects the color of the elements in block p</label> + <whatsthis>Selects the color of the elements in block p</whatsthis> + <default>#62ee25</default> + </entry> + <entry name="block_d" type="Color"> + <label>Selects the color of the elements in block d</label> + <whatsthis>Selects the color of the elements in block d</whatsthis> + <default>#f4fd40</default> + </entry> + <entry name="block_f" type="Color"> + <label>Selects the color of the elements in block f</label> + <whatsthis>Selects the color of the elements in block f</whatsthis> + <default>#ee5ab8</default> + </entry> + <entry name="group_1" type="Color"> + <label>Selects the color of the elements in group 1</label> + <whatsthis>Selects the color of the elements in group 1</whatsthis> + <default>#dd00ee</default> + </entry> + <entry name="group_2" type="Color"> + <label>Selects the color of the elements in group 2</label> + <whatsthis>Selects the color of the elements in group 2</whatsthis> + <default>#2284ee</default> + </entry> + <entry name="group_3" type="Color"> + <label>Selects the color of the elements in group 3</label> + <whatsthis>Selects the color of the elements in group 3</whatsthis> + <default>#91ee7f</default> + </entry> + <entry name="group_4" type="Color"> + <label>Selects the color of the elements in group 4</label> + <whatsthis>Selects the color of the elements in group 4</whatsthis> + <default>#c80000</default> + </entry> + <entry name="group_5" type="Color"> + <label>Selects the color of the elements in group 5</label> + <whatsthis>Selects the color of the elements in group 5</whatsthis> + <default>#eec809</default> + </entry> + <entry name="group_6" type="Color"> + <label>Selects the color of the elements in group 6</label> + <whatsthis>Selects the color of the elements in group 6</whatsthis> + <default>#486f8b</default> + </entry> + <entry name="group_7" type="Color"> + <label>Selects the color of the elements in group 7</label> + <whatsthis>Selects the color of the elements in group 7</whatsthis> + <default>#ee0842</default> + </entry> + <entry name="group_8" type="Color"> + <label>Selects the color of the elements in group 8</label> + <whatsthis>Selects the color of the elements in group 8</whatsthis> + <default>#b4adff</default> + </entry> + <entry name="beh_acidic" type="Color"> + <label>Selects the color of the elements with acidic behaviour</label> + <whatsthis>Selects the color of the elements with acidic behaviour</whatsthis> + <default>#b4adff</default> + </entry> + <entry name="beh_basic" type="Color"> + <label>Selects the color of the elements with basic behaviour</label> + <whatsthis>Selects the color of the elements with basic behaviour</whatsthis> + <default>#d3ee22</default> + </entry> + <entry name="beh_amphoteric" type="Color"> + <label>Selects the color of the elements with amphoteric behaviour</label> + <whatsthis>Selects the color of the elements with amphoteric behaviour</whatsthis> + <default>#EE4346</default> + </entry> + <entry name="beh_neutral" type="Color"> + <label>Selects the color of the elements with neutral behaviour</label> + <whatsthis>Selects the color of the elements with neutral behaviour</whatsthis> + <default>#44EE2E</default> + </entry> + <entry name="alkalie" type="Color"> + <label>Selects the color of the alkali metals</label> + <whatsthis>Selects the color of the alkali metals</whatsthis> + <default>#FFFF2D</default> + </entry> + <entry name="rare" type="Color"> + <label>Selects the color of the rare-earth elements</label> + <whatsthis>Selects the color of the rare-earth elements</whatsthis> + <default>#5B2EFF</default> + </entry> + <entry name="nonmetal" type="Color"> + <label>Selects the color of the non-metal elements</label> + <whatsthis>Selects the color of the non-metal elements</whatsthis> + <default>#CCBE2C</default> + </entry> + <entry name="alkaline" type="Color"> + <label>Selects the color of the alkaline earth metals</label> + <whatsthis>Selects the color of the alkaline earth metals</whatsthis> + <default>#3DD9DE</default> + </entry> + <entry name="other_metal" type="Color"> + <label>Selects the color of the metals which do not fit into the other categories</label> + <whatsthis>Selects the color of the metals which do not fit into the other categories</whatsthis> + <default>#546F56</default> + </entry> + <entry name="halogene" type="Color"> + <label>Selects the color of the halogen elements</label> + <whatsthis>Selects the color of the halogen elements</whatsthis> + <default>#5BF4A0</default> + </entry> + <entry name="transition" type="Color"> + <label>Selects the color of the transition elements</label> + <whatsthis>Selects the color of the transition elements</whatsthis> + <default>#97F805</default> + </entry> + <entry name="noble_gas" type="Color"> + <label>Selects the color of the noble gases</label> + <whatsthis>Selects the color of the noble gases</whatsthis> + <default>#C56188</default> + </entry> + <entry name="metalloid" type="Color"> + <label>Selects the color of the metalloid elements</label> + <whatsthis>Selects the color of the metalloid elements</whatsthis> + <default>#E8D888</default> + </entry> + </group> + <group name="Units"> + <entry name="energies" type="Int"> + <label>This value defines whether eV or kJ/mol should be used within Kalzium</label> + <whatsthis>Use eV or kJ/mol</whatsthis> + <default>0</default> + </entry> + <entry name="temperature" type="Int"> + <label>This value defines which temperature scale should be used within Kalzium</label> + <whatsthis>Select the scale for the temperature</whatsthis> + <default>0</default> + </entry> + </group> + <group name="Sidebar"> + <entry name="showsidebar" type="Bool"> + <label>Show or hide the sidebar</label> + <whatsthis>Show or hide the sidebar</whatsthis> + <default>true</default> + </entry> + </group> +</kcfg> diff --git a/kalzium/src/kalziumdataobject.cpp b/kalzium/src/kalziumdataobject.cpp new file mode 100644 index 00000000..3d1a33bf --- /dev/null +++ b/kalzium/src/kalziumdataobject.cpp @@ -0,0 +1,264 @@ +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "kalziumdataobject.h" + +#include "isotope.h" +#include "spectrum.h" + +#include <qdom.h> +#include <qfile.h> + +#include <klocale.h> +#include <kdebug.h> +#include <klocale.h> +#include <kurl.h> +#include <kstandarddirs.h> +#include <kapplication.h> + +KalziumDataObject* KalziumDataObject::instance() +{ + static KalziumDataObject kdo; + return &kdo; +} + +KalziumDataObject::KalziumDataObject() +{ + QDomDocument doc( "datadocument" ); + + KURL url; + url.setPath( locate("data", "kalzium/data/")); + url.setFileName( "data.xml" ); + QFile layoutFile( url.path() ); + + if (!layoutFile.exists()) + { + kdDebug() << "data.xml not found, exiting" << endl; + kapp->exit(0); + return; + } + + if (!layoutFile.open(IO_ReadOnly)) + { + kdDebug() << "data.xml IO-error" << endl; + return; + } + + // Check if the document is well-formed + if (!doc.setContent(&layoutFile)) + { + kdDebug() << "wrong xml" << endl; + layoutFile.close(); + return; + } + layoutFile.close(); + + ElementList = readData( doc ); + m_numOfElements = ElementList.count(); +} + +KalziumDataObject::~KalziumDataObject() +{ +} + +Element* KalziumDataObject::element( int number ) +{ + // checking that we are requesting a valid element + if ( ( number <= 0 ) || ( number > m_numOfElements ) ) + return 0; + return *( ElementList.at( number-1 ) ); +} + +EList KalziumDataObject::readData( QDomDocument &dataDocument ) +{ + EList list; + QDomNodeList elementNodes; //the list of all element + QDomElement domElement; //a single element + + //read in all elements + elementNodes = dataDocument.elementsByTagName( "element" ); + + const uint count = elementNodes.count(); + + for ( uint i = 0; i < count; ++i ) + {//iterate through all elements + domElement = ( const QDomElement& ) elementNodes.item( i ).toElement(); + + double mass = domElement.namedItem( "mass" ).toElement().text().toDouble(); + double en = domElement.namedItem( "electronegativity" ).toElement().text().toDouble(); + double ea = domElement.namedItem( "electronaffinity" ).toElement().text().toDouble(); + double mp = domElement.namedItem( "meltingpoint" ).toElement().text().toDouble(); + double bp = domElement.namedItem( "boilingpoint" ).toElement().text().toDouble(); + double density = domElement.namedItem( "density" ).toElement().text().toDouble(); + double covalent_radius = domElement.namedItem( "radius" ).namedItem( "covalent" ).toElement().text().toDouble(); + //van der Waals-Radius + double vdw_radius = domElement.namedItem( "radius" ).namedItem( "vdw" ).toElement().text().toDouble(); + double atomic_radius = domElement.namedItem( "radius" ).namedItem( "atomic" ).toElement().text().toDouble(); + double ionic_radius = domElement.namedItem( "radius" ).namedItem( "ionic" ).toElement().text().toDouble(); + QString ionic_charge = domElement.namedItem( "radius" ).namedItem( "ionic" ).toElement().attributeNode( "charge" ).value(); + + int bio = domElement.namedItem( "biologicalmeaning" ).toElement().text().toInt(); + int radioactive = domElement.namedItem( "radioactive" ).toElement().text().toInt(); + int period = domElement.namedItem( "period" ).toElement().text().toInt(); + int artificial = domElement.namedItem( "artificial" ).toElement().text().toInt(); + int date = domElement.namedItem( "date" ).toElement().text().toInt(); + int number = domElement.namedItem( "number" ).toElement().text().toInt(); + int abundance = domElement.namedItem( "abundance" ).toElement().text().toInt(); + + QString scientist = domElement.namedItem( "date" ).toElement().attributeNode( "scientist" ).value(); + QString crystal = domElement.namedItem( "crystalstructure" ).toElement().text(); + + QDomElement nameE = domElement.namedItem( "name" ).toElement(); + QString name = nameE.text(); + QString origin = i18n( nameE.attributeNode( "origin" ).value().utf8() ); + + QString block = domElement.namedItem( "block" ).toElement().text(); + QString group = domElement.namedItem( "group" ).toElement().text(); + QString family = domElement.namedItem( "family" ).toElement().text(); + QString orbits = domElement.namedItem( "orbits" ).toElement().text(); + QString symbol = domElement.namedItem( "symbol" ).toElement().text(); + QString oxydation = domElement.namedItem( "oxydation" ).toElement().text(); + QString acidicbehaviour = domElement.namedItem( "acidicbehaviour" ).toElement().text(); + + QDomNodeList elist = domElement.elementsByTagName( "energy" ); + QValueList<double> ionlist; + for( uint i = 0; i < elist.length(); i++ ) + { + ionlist.append( elist.item( i ).toElement().text().toDouble() ); + } + + //now read in all the date for the isotopes + QDomNodeList isotopelist = domElement.elementsByTagName( "isotope" ); + QValueList<Isotope*> isolist; + for( uint i = 0; i < isotopelist.length(); i++ ) + { + QDomElement iso = isotopelist.item( i ).toElement(); + double halflife = iso.attributeNode( "halflife" ).value().toDouble(); + double weight = iso.attributeNode( "weight" ).value().toDouble(); + QString format = iso.attributeNode( "halflifeformat" ).value(); + int neutrons = iso.attributeNode( "neutron" ).value().toInt(); + double percentage = iso.attributeNode( "percentage" ).value().toDouble(); + double alphapercentage = iso.attributeNode( "alphapercentage" ).value().toDouble(); + double betapluspercentage = iso.attributeNode( "betapluspercentage" ).value().toDouble(); + double betaminuspercentage = iso.attributeNode( "betaminuspercentage" ).value().toDouble(); + double ecpercentage = iso.attributeNode( "ecpercentage" ).value().toDouble(); + double alphadecay = iso.attributeNode( "alphadecay" ).value().toDouble(); + double betaplusdecay = iso.attributeNode( "betaplusdecay" ).value().toDouble(); + double betaminusdecay = iso.attributeNode( "betaminusdecay" ).value().toDouble(); + double ecdecay = iso.attributeNode( "ecdecay" ).value().toDouble(); + QString spin = iso.attributeNode( "spin" ).value(); + QString magmoment = iso.attributeNode( "magmoment" ).value(); + + + Isotope *isotope = new Isotope( neutrons, + number, + percentage, + weight, + halflife, + format, + alphadecay, + betaplusdecay, + betaminusdecay, + ecdecay, + alphapercentage, + betapluspercentage, + betaminuspercentage, + ecpercentage, + spin, + magmoment ); + isolist.append( isotope ); + } + + QDomNodeList spectrumList = domElement.namedItem( "spectra" ).toElement().elementsByTagName( "spectrum" ); + + Element *e = new Element(); + e->setDate(date); + e->setBiologicalMeaning(bio); + e->setNumber( number ); + e->setName(i18n(name.utf8())); + e->setRadius( Element::ATOMIC, atomic_radius ); + e->setRadius( Element::IONIC, ionic_radius, ionic_charge ); + e->setRadius( Element::COVALENT, covalent_radius ); + e->setRadius( Element::VDW, vdw_radius ); + e->setAbundance( abundance ); + + if ( artificial == 1 ) + e->setArtificial(); + if ( radioactive == 1 ) + e->setRadioactive(); + + e->setScientist(scientist); + e->setPeriod( period ); + e->setCrysatalstructure( crystal ); + e->setOrigin(origin); + e->setBlock(block); + e->setGroup(group); + e->setFamily(family); + e->setOrbits(orbits); + e->setSymbol(symbol); + e->setOxydation(oxydation); + e->setAcidicbehaviour(acidicbehaviour); + e->setIonisationList( ionlist ); + e->setIsotopeList( isolist ); + + e->setMass( mass ); + e->setEN( en ); + e->setEA( ea ); + e->setMeltingpoint( mp ); + e->setBoilingpoint( bp ); + e->setDensity( density ); + + e->setupXY(); + + Spectrum *spectrum = new Spectrum(); + bool spectrum_temp = false; + if ( spectrumList.length() > 0 ) + spectrum_temp = true; + for( uint i = 0; i < spectrumList.length(); i++ ) + { + Spectrum::band b; + QDomElement spec = spectrumList.item( i ).toElement(); + + b.intensity = spec.attributeNode( "intensity" ).value().toInt(); + b.wavelength = spec.attributeNode( "wavelength" ).value().toDouble()/10.0; + b.aki = spec.attributeNode( "aki" ).value().toDouble(); + b.energy1 = spec.attributeNode( "energy1" ).value().toDouble(); + b.energy2 = spec.attributeNode( "energy2" ).value().toDouble(); + b.electronconfig1 = spec.attributeNode( "electronconfig1" ).value(); + b.electronconfig2 = spec.attributeNode( "electronconfig1" ).value(); + b.term1 = spec.attributeNode( "term1" ).value(); + b.term2 = spec.attributeNode( "term2" ).value(); + b.J1 = spec.attributeNode( "J1" ).value(); + b.J2 = spec.attributeNode( "J2" ).value(); + + spectrum->addBand( b ); + } + if ( spectrum_temp ) //if no spectrumdata are found don't use this object + e->setSpectrum( spectrum ); + e->setHasSepctrum( spectrum_temp ); + + list.append( e ); + coordinate point; point.x = e->x; point.y = e->y; + CoordinateList.append( point ); + } + + return list; +} + diff --git a/kalzium/src/kalziumdataobject.h b/kalzium/src/kalziumdataobject.h new file mode 100644 index 00000000..6d358510 --- /dev/null +++ b/kalzium/src/kalziumdataobject.h @@ -0,0 +1,79 @@ +#ifndef KALZIUMDATAOBJECT_H +#define KALZIUMDATAOBJECT_H +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "element.h" + +/** + * @short This class contains all Element objects + * + * This singleton class collects all the information about the elements of the + * Periodic Table as list of Element (QValueList<Element*>). + * Use: + * @code + * KalziumDataObject::instance()->ElementList; + * @endcode + * to get the whole list of Element, while a + * @code + * KalziumDataObject::instance()->element( num ); + * @endcode + * will return you the pointer to the num'th element of the Periodic Table. + * + * @author Carsten Niehaus + */ +class KalziumDataObject +{ + public: + /** + * @return the instance of this class + */ + static KalziumDataObject* instance(); + + /** + * The list of elements in a QValueList<Element*> + */ + EList ElementList; + + CList CoordinateList; + + /** + * @return the Element with the number @p number + * @param number the number of the Element which will be returned + */ + Element* element( int number ); + + /** + * @return the number of elements we have + */ + int numberOfElements() const { return m_numOfElements; } + + private: + KalziumDataObject(); + ~KalziumDataObject(); + + EList readData( QDomDocument &dataDocument ); + + /** + * Caching the number of elements + */ + int m_numOfElements; +}; +#endif // KALZIUMDATAOBJECT_H diff --git a/kalzium/src/kalziumtip.cpp b/kalzium/src/kalziumtip.cpp new file mode 100644 index 00000000..0f053c77 --- /dev/null +++ b/kalzium/src/kalziumtip.cpp @@ -0,0 +1,306 @@ +/*************************************************************************** + * Copyright (C) 2005 by Zack Rusin <zrusin@kde.org> * + * Sami Kyostil <skyostil@kempele.fi> * + * Aaron J. Seigo <aseigo@kde.org> * + * Martin Pfeiffer <hubipete@gmx.net> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "kalziumtip.h" +#include "kalziumutils.h" +#include "element.h" + +#include <qapplication.h> +#include <qpixmap.h> +#include <qimage.h> +#include <qsimplerichtext.h> +#include <qpainter.h> +#include <qdesktopwidget.h> + +#include <kdialog.h> +#include <kdebug.h> +#include <kglobal.h> +#include <kiconloader.h> +#include <klocale.h> +#include <kstandarddirs.h> + +KalziumTip::KalziumTip( QWidget * parent, const char * name, WFlags f ) : QWidget( parent, name, f ) +{ + setFocusPolicy(NoFocus); //the widget don't get the keyboard focus + setBackgroundMode(NoBackground); // widget has no background + resize(0,0); + hide(); //initailly hide it + m_richText = 0; + m_noElemIcon = KGlobal::iconLoader()->loadIcon( "orbits", KIcon::NoGroup, 64 ); + setMouseTracking(true); // receice mouse move events + + connect(&m_frameTimer, SIGNAL(timeout()), SLOT(internalUpdate())); +} + +void KalziumTip::showTip( QPoint mouse, Element* element, int visibleWidth, int visibleHeight ) +{ + QWidget *p = 0; + if ( dynamic_cast<QWidget*>( parent() ) ) + p = static_cast<QWidget*>( parent() ); + + if ( p ) + { + if ( mouse.y() + size().height() > visibleHeight ) + mouse.setY( mouse.y() - size().height() ); + if ( mouse.x() + size().width() > visibleWidth ) + mouse.setX( mouse.x() - size().width() ); + + if ( p->width() < visibleWidth ) + { + if ( mouse.x() + size().width() > p->width() ) + mouse.setX( mouse.x() - size().width() ); + } + + if ( p->height() < visibleHeight ) + { + if ( mouse.y() + size().height() > p->height() ) + mouse.setY( mouse.y() - size().height() ); + } + } + + m_mousePointer = mouse; + + if( element == m_tippedElement ) + { + // Avoid moving out of the current screen + if (m_mousePointer.x()+width() > qApp->desktop()->width()) + m_mousePointer.setX(qApp->desktop()->width() - width()); + + move(m_mousePointer); //do not paint again if already painted + } + else + { + if ( element == 0) + return; + + m_tippedElement = element; + + loadIcon(); //load icon + display(); + } +} + +void KalziumTip::paintEvent(QPaintEvent* e) +{ + if (m_dirty) + { + displayInternal(); + m_dirty = false; + } + + QPainter p(this); + p.drawPixmap(e->rect().topLeft(), m_pixmap, e->rect()); +} + +void KalziumTip::mouseMoveEvent(QMouseEvent * e) +{ + // delegate the mouse move event to the parent (actually the elements table) + // so that this tooltip doesn't stop to be updated + e->ignore(); +} + +void KalziumTip::display() +{ + if( !m_tippedElement ) + return; + + delete m_richText; + + QString elementname = m_tippedElement->elname(); + + QString number = i18n( "Number: %1" ) + .arg( QString::number(m_tippedElement->number()) ); + + QString mass = i18n( "Mass: %1" ) + .arg( KalziumUtils::localizedValue(m_tippedElement->mass(), 6) ); + + m_richText = new QSimpleRichText("<qt><h1>" + elementname + "</h1><p>" + + number + "</p><p>" + + mass +"</p></qt>", font()); + + m_richText->setWidth(400); + + m_maskEffect = isVisible() ? Plain : Dissolve; + m_dissolveSize = 24; + m_dissolveDelta = -1; + + displayInternal(); + m_frameTimer.start(500/30); + + move(m_mousePointer); + show(); +} + +void KalziumTip::displayInternal() +{ + if (!m_richText) + return; + + + // determine text rectangel sizes + QRect textRect(0,0,0,0); + textRect.setWidth(m_richText->widthUsed()); + textRect.setHeight(m_richText->height()); + + //moves the rect + textRect.moveBy(-textRect.left(), -textRect.top()); + // add the new coordinates + textRect.addCoords(0,0,2,2); + + int margin = KDialog::marginHint(); + int height = QMAX(m_icon.height(), textRect.height()) + 2 * margin; + int textX = 2 + m_icon.width() + 2 * margin; + int width = textX + textRect.width() + margin; + int textY = (height - textRect.height()) / 2; + + //resize pixmap, mask and widget + m_mask.resize(width, height); + m_pixmap.resize(width, height); + resize(width, height); + + // create and set transparency mask + switch(m_maskEffect) + { + case Plain: + plainMask(); + break; + + case Dissolve: + dissolveMask(); + break; + } + + // draw background + QPainter bufferPainter(&m_pixmap); + bufferPainter.setPen(Qt::black); + bufferPainter.setBrush(backgroundColor()); + bufferPainter.drawRoundRect(0, 0, width, height, + 1600 / width, 1600 / height); + + // draw icon if present + if (!m_icon.isNull()) + { + bufferPainter.drawPixmap(margin, + margin, + m_icon, 0, 0, + m_icon.width(), m_icon.height()); + } + + // draw text shadow + QColorGroup cg = colorGroup(); + cg.setColor(QColorGroup::Text, cg.background().dark(115)); + int shadowOffset = QApplication::reverseLayout() ? -1 : 1; + m_richText->draw(&bufferPainter, 5 + textX + shadowOffset, textY + 1, QRect(), cg); + + // draw text + cg = colorGroup(); + m_richText->draw(&bufferPainter, 5 + textX, textY, rect(), cg); +} + +void KalziumTip::dissolveMask() +{ + QPainter maskPainter(&m_mask); + + m_mask.fill(Qt::black); + + maskPainter.setBrush(Qt::white); + maskPainter.setPen(Qt::white); + maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(), + 1600 / m_mask.rect().height()); + + m_dissolveSize += m_dissolveDelta; + + if (m_dissolveSize > 0) + { + maskPainter.setRasterOp(Qt::EraseROP); + + int x, y, s; + const int size = 16; + const int heightsize = size + height(); + + for (y = 0; y < heightsize; y += size) + { + x = width(); + s = m_dissolveSize * x / 128; + for (; x > -size; x -= size, s -= 2) + { + if (s < 0) + { + s = 0; + } + maskPainter.drawEllipse(x - s / 2, y - s / 2, s, s); + } + } + } + else if (m_dissolveSize < 0) + { + m_frameTimer.stop(); + m_dissolveDelta = 1; + } + + setMask(m_mask); +} + +void KalziumTip::hide() +{ + m_frameTimer.stop(); + m_tippedElement = 0; + QWidget::hide(); +} + +void KalziumTip::plainMask() +{ + QPainter maskPainter(&m_mask); + + m_mask.fill(Qt::black); + + maskPainter.setBrush(Qt::white); + maskPainter.setPen(Qt::white); + maskPainter.drawRoundRect(m_mask.rect(), 1600 / m_mask.rect().width(), + 1600 / m_mask.rect().height()); + setMask(m_mask); + m_frameTimer.stop(); +} + +void KalziumTip::internalUpdate() +{ + m_dirty = true; + update(); +} + +void KalziumTip::loadIcon() +{ + QString iconpath = locate( "data" , "kalzium/elempics/" + m_tippedElement->symbol() + ".jpg" ); + if ( !iconpath.isEmpty() ) + { + QImage img ( iconpath, "JPEG" ); + img = img.smoothScale ( 128, 128, QImage::ScaleMin ); + m_icon.convertFromImage( img ); + + } + else + { + m_icon = m_noElemIcon; + } +} + +#include "kalziumtip.moc" diff --git a/kalzium/src/kalziumtip.h b/kalzium/src/kalziumtip.h new file mode 100644 index 00000000..425e2a7e --- /dev/null +++ b/kalzium/src/kalziumtip.h @@ -0,0 +1,88 @@ +#ifndef KALZIUMTIP_H +#define KALZIUMTIP_H +/*************************************************************************** + + The header for the tooltip class of Kalzium + ------------------- + begin : June 2003 + copyright : (C) 2003, 2004, 2005 by Zack Rusin <zrusin@kde.org> + Sami Kyostil <skyostil@kempele.fi> + Aaron J. Seigo <aseigo@kde.org> + Martin Pfeiffer <hubipete@gmx.net> + + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + + +#include <qwidget.h> +#include <qbitmap.h> +#include <qtimer.h> + +class QPaintEvent; +class QSimpleRichText; +class QPixmap; +class Element; +class QTimer; + + +/** + * @short tooltip for kalzium + * @author Martin Pfeiffer + */ +class KalziumTip : public QWidget +{ + Q_OBJECT + + public: + enum MaskEffect { Plain, Dissolve }; + + KalziumTip( QWidget * parent = 0, const char * name = 0, WFlags f = 0 ); + + void showTip( QPoint, Element* element, int visibleWidth, int visibleHeight ); //show the tip + void hide(); // hide it + + protected: + void paintEvent(QPaintEvent * e); + + void plainMask(); + void dissolveMask(); + // if the mouse pointer hovers us, send the event to the parent + // so we are some-what 'mouse transparent' + void mouseMoveEvent(QMouseEvent * e); + void displayInternal(); + void display(); + + void loadIcon(); //loads the elements icon + + protected slots: + void internalUpdate(); + + private: + QBitmap m_mask; + QPoint m_mousePointer; + QPixmap m_pixmap; + QPixmap m_icon; //icon shown on the tip + QPixmap m_noElemIcon; //icon for element wich have no image + + MaskEffect m_maskEffect; //inidicates to show mask effect or plain + QSimpleRichText* m_richText; + + int m_dissolveSize; + int m_dissolveDelta; + + QTimer m_frameTimer; //timer for the dissolve effect + bool m_dirty; //indicates repainting the tooltip internal + + const Element* m_tippedElement; //the element the tip is about +}; + +#endif + diff --git a/kalzium/src/kalziumui.rc b/kalzium/src/kalziumui.rc new file mode 100644 index 00000000..80c9be54 --- /dev/null +++ b/kalzium/src/kalziumui.rc @@ -0,0 +1,45 @@ +<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd"> +<kpartgui name="kalzium" version="4"> +<MenuBar> + <Menu name="file" noMerge="0"><text>&File</text> + <Action name="export_data"/> + </Menu> + <Menu name="table_menu"><text>&View</text> + <Action name="view_numerationtype" /> + <Menu name="look_menu"><text>&Look</text> + <Action name="view_look_noscheme" /> + <Separator /> + <Action name="view_look_groups" /> + <Action name="view_look_blocks" /> + <Action name="view_look_acid" /> + <Action name="view_look_family" /> + <Action name="view_look_crystal" /> + <Action name="view_look_gradmenu" /> + </Menu> + <Separator /> + <Action name="view_legend" /> + <Action name="view_tooltip" /> + <Action name="view_sidebar"/> + </Menu> + <Menu name="miscmenu"><text>&Tools</text> + <Action name="tools_plotdata" /> + <Action name="tools_glossary" /> + <Action name="tools_eqsolver" /> + </Menu> + <Menu name="settings"><text>&Settings</text> + </Menu> +</MenuBar> + +<ToolBar name="mainToolBar"> + <text>Main Toolbar</text> + <Action name="view_legend" /> + <Action name="view_tooltip" /> + <Action name="view_sidebar"/> + <Separator /> + <Action name="tools_plotdata" /> + <Action name="tools_isotopetable" /> + <Action name="tools_glossary" /> + <Action name="tools_eqsolver" /> +</ToolBar> + +</kpartgui> diff --git a/kalzium/src/kalziumutils.cpp b/kalzium/src/kalziumutils.cpp new file mode 100644 index 00000000..2e4dd127 --- /dev/null +++ b/kalzium/src/kalziumutils.cpp @@ -0,0 +1,88 @@ +/*************************************************************************** + copyright : (C) 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "kalziumutils.h" + +#include <kdebug.h> +#include <kglobal.h> +#include <klocale.h> +#include <qfont.h> +#include <qrect.h> +#include <qpainter.h> +#include <qglobal.h> + +#include <math.h> +#if defined(Q_OS_SOLARIS) +#include <ieeefp.h> +#endif + +int KalziumUtils::maxSize( const QString& string, const QRect& rect, QFont font, QPainter* p, int minFontSize, int maxFontSize ) +{ + bool goodSizeFound = false; + int size = maxFontSize; + QRect r; + + do + { + font.setPointSize( size ); + p->setFont( font ); + r = p->boundingRect( QRect(), Qt::AlignAuto, string ); + r.moveBy( rect.left(), rect.top() ); + + if ( rect.contains( r ) ) + goodSizeFound = true; + else + size--; + } + while ( !goodSizeFound && ( size > minFontSize ) ); + + return size; +} + +int KalziumUtils::StringHeight( const QString& string, const QFont& font, QPainter* p ) +{ + return p->boundingRect( QRect(), Qt::AlignAuto, string ).height(); +} + +int KalziumUtils::StringWidth( const QString& string, const QFont& font, QPainter* p ) +{ + return p->boundingRect( QRect(), Qt::AlignAuto, string ).width(); +} + +double KalziumUtils::strippedValue( double num ) +{ + if ( !finite( num ) ) + return num; + + double power; + power = 1e-6; + while ( power < num ) + power *= 10; + + num = num / power * 10000; + num = qRound( num ); + + return num * power / 10000; +} + +QString KalziumUtils::localizedValue( double val, int precision, unsigned long options ) +{ + QString str = KGlobal::locale()->formatNumber( val, precision ); + while( str.endsWith("0") ) + str.truncate( str.length()-1); + if ( str.endsWith( KGlobal::locale()->decimalSymbol() ) ) + { + // we do not want trailing ',' values so readd trailing 0 + str.append( '0' ); // + } + return str; +} diff --git a/kalzium/src/kalziumutils.h b/kalzium/src/kalziumutils.h new file mode 100644 index 00000000..36f66080 --- /dev/null +++ b/kalzium/src/kalziumutils.h @@ -0,0 +1,73 @@ +#ifndef KALZIUMUTILS_H +#define KALZIUMUTILS_H + +/*************************************************************************** + copyright : (C) 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +class QString; +class QRect; +class QFont; +class QPainter; + +class KalziumUtils +{ + public: + + enum FormatOptions { NoOptions, + Round = 1 + }; + /** + * @param string the string which is measured + * @param rect the rect needed for measurement + * @param font the used font + * @param painter the used painter + * @param maxFontSize the maximum fontsize + * @param minFontSize the maximum fontsize + */ + static int maxSize( const QString& string, const QRect& rect, QFont font, QPainter* painter, int minFontSize = 4, int maxFontSize = 20 ); + + /** + * calculate the 4-digit value of the value @p w. For + * example, 12.3456 will be returned as 12.35 + * @param value the value which will be stripped + * @return the 4-digit value + */ + static double strippedValue( double value ); + + /** + * format the given double with localized separators + * @param val the number value as double + * @param precision number of decimals + * @param options the options used for formatting of @p val + * @return + */ + static QString localizedValue( double val, int precision, unsigned long options = 0 ); + + /** + * @param string the string which is measured + * @param font the used font + * @param painter the used painter + * @return the width of the string @p string + */ + static int StringWidth( const QString& string, const QFont& font, QPainter* painter ); + /** + * @param string the string which is measured + * @param font the used font + * @param painter the used painter + * @return the height of the string @p string + */ + static int StringHeight( const QString& string, const QFont& font, QPainter* painter ); +}; + +#endif // KALZIUMUTILS_H + diff --git a/kalzium/src/main.cpp b/kalzium/src/main.cpp new file mode 100644 index 00000000..3ea452df --- /dev/null +++ b/kalzium/src/main.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (C) 2003-2005 Carsten Niehaus <cniehaus@kde.org> + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <kapplication.h> +#include <kaboutdata.h> +#include <kcmdlineargs.h> + +#include "config.h" +#include "kalzium.h" + +#define APP_VERSION "1.4.6" + +static const char description[] = + I18N_NOOP("A periodic table of the elements"); + +static const char version[] = APP_VERSION; + +static KCmdLineOptions options[] = +{ +// { "+[URL]", I18N_NOOP( "Document to open" ), 0 }, + KCmdLineLastOption +}; + +#ifdef HAVE_FACILE +extern "C" { + void caml_startup(char**); +}; +#endif + +int main(int argc, char **argv) +{ +#ifdef HAVE_FACILE + caml_startup(argv); +#endif + + KAboutData about("kalzium", I18N_NOOP("Kalzium"), version, description, + KAboutData::License_GPL, "(C) 2002-2005 Carsten Niehaus", 0, "http://edu.kde.org/kalzium"); + about.addAuthor( "Carsten Niehaus", 0, "cniehaus@kde.org" ); + about.addCredit( "Pino Toscano", I18N_NOOP("Code contributions" )); + about.addCredit( "Martin Pfeiffer", I18N_NOOP("Tooltip, some other small things" )); + about.addCredit( "Thomas Nagy", I18N_NOOP("Contributed EqChem, the equation solver" )); + about.addCredit( "Jörg Buchwald", I18N_NOOP("Contributed most isotope information" )); + about.addCredit( "Marco Martin", I18N_NOOP("Thank you for some icons and inspiration for others" )); + about.addCredit( "Chris Luetchford", I18N_NOOP("SVG icon"), "chris@os11.com"); + about.addCredit( "Anne-Marie Mahfouf", I18N_NOOP( "A lot of small things and the documentation" )); + about.addCredit( "Paweł Budzyński", I18N_NOOP( "The pictures of the elements iodine and bromine" )); + about.addCredit( "M. Stegemann", I18N_NOOP( "Almost all pictures of the elements" )); + about.addCredit( "Daniel Haas", I18N_NOOP( "The design of the information dialog" )); + about.addCredit( "Brian Beck", I18N_NOOP( "The orbits-icon" )); + about.addCredit( "Lee Olson", I18N_NOOP( "Several icons in the information dialog" )); + about.addCredit( "Inge Wallin", I18N_NOOP( "Code cleaning, the molecule parser and a lot of smaller improvements" )); + KCmdLineArgs::init(argc, argv, &about); + KCmdLineArgs::addCmdLineOptions( options ); + KApplication app; + Kalzium *mainWin = 0; + + if (app.isRestored()) + { + RESTORE(Kalzium); + } + else + { + // no session.. just start up normally + KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); + + /// @todo do something with the command line args here + + mainWin = new Kalzium(); + app.setMainWidget( mainWin ); + mainWin->show(); + + args->clear(); + } + + // mainWin has WDestructiveClose flag by default, so it will delete itself. + return app.exec(); +} + diff --git a/kalzium/src/molcalcwidget.cpp b/kalzium/src/molcalcwidget.cpp new file mode 100644 index 00000000..c9947eda --- /dev/null +++ b/kalzium/src/molcalcwidget.cpp @@ -0,0 +1,153 @@ +/*************************************************************************** + * Copyright (C) 2003-2005 by Carsten Niehaus, cniehaus@kde.org * + * Copyright (C) 2005 by Inge Wallin, inge@lysator.liu.se * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + * * + ***************************************************************************/ + + +#include "molcalcwidget.h" + +#include "kalziumdataobject.h" +#include "molcalcwidgetbase.h" +#include "element.h" +#include "kalziumutils.h" +#include "parser.h" +#include "moleculeparser.h" + +#include <kaction.h> +#include <kdebug.h> +#include <klocale.h> +#include <kpushbutton.h> +#include <klineedit.h> +#include <ktoolbar.h> + +#include <qlabel.h> +#include <qlayout.h> +#include <qtooltip.h> + + +MolcalcWidget::MolcalcWidget( QWidget *parent, const char *name ) + : MolcalcWidgetBase( parent, name ) +{ + clear(); +} + + +void MolcalcWidget::clear() +{ + // Clear the data. + m_mass = 0; + m_elementMap.clear(); + + // Clear the widgets. + resultLabel->setText( "" ); + resultMass->setText( "" ); + + resultComposition->setText( i18n("To start, enter\na formula in the\nwidget above and\nclick on 'Calc'.") ); + + QToolTip::remove( resultMass ); + QToolTip::remove( resultComposition ); + QToolTip::remove( resultLabel ); +} + + +void MolcalcWidget::updateUI() +{ + if ( m_validInput ){ + + QString str; + + // The complexString stores the whole molecule like this: + // 1 Seaborgium. Cumulative Mass: 263.119 u (39.2564 %) + QString complexString; + + // Create the list of elements making up the molecule + ElementCountMap::Iterator it = m_elementMap.begin(); + ElementCountMap::Iterator itEnd = m_elementMap.end(); + for ( ; it != itEnd; ++it ) { + // Update the resultLabel + str += i18n( "For example: \"1 Carbon\" or \"3 Oxygen\"", "%1 %2\n" ) + .arg( (*it)->count() ) + .arg( (*it)->element()->elname() ); + + complexString + += i18n( "For example: 1 Seaborgium. Cumulative Mass: 263.119 u (39.25%)", + "%1 %2. Cumulative Mass: %3 u (%4%)\n" ) + .arg( (*it)->count() ) + .arg( (*it)->element()->elname() ) + .arg( (*it)->count() * (*it)->element()->mass() ) + .arg( KalziumUtils::strippedValue( (( (*it)->count() * (*it)->element()->mass() ) + / m_mass ) * 100 ) ); + } + resultLabel->setText( str ); + + // The composition + resultComposition->setText( compositionString(m_elementMap) ); + + // The mass + resultMass->setText( i18n( "Molecular mass: %1 u" ).arg( m_mass ) ); + + QToolTip::add( resultMass, complexString ); + QToolTip::add( resultComposition, complexString ); + QToolTip::add( resultLabel, complexString ); + } + else{//the input was invalid, so tell this the user + resultComposition->setText( i18n( "Invalid input" ) ); + resultLabel->setText( QString() ); + resultMass->setText( QString() ); + + QToolTip::add( resultMass, i18n( "Invalid input" ) ); + QToolTip::add( resultComposition, i18n( "Invalid input" ) ); + QToolTip::add( resultLabel, i18n( "Invalid input" ) ); + } +} + + +QString MolcalcWidget::compositionString( ElementCountMap &_map ) +{ + QString str; + + ElementCountMap::Iterator it = _map.begin(); + ElementCountMap::Iterator itEnd = _map.end(); + for (; it != itEnd; ++it) { + str += i18n( "%1<sub>%2</sub> " ) + .arg( (*it)->element()->symbol() ) + .arg( (*it)->count() ); + } + + return str; +} + + +// ---------------------------------------------------------------- +// slots + + +void MolcalcWidget::slotCalcButtonClicked() +{ + QString molecule = formulaEdit->text(); + + // Parse the molecule, and at the same time calculate the total + // mass, and the composition of it. + m_validInput = m_parser.weight(molecule, &m_mass, &m_elementMap); + + updateUI(); +} + + +#include "molcalcwidget.moc" diff --git a/kalzium/src/molcalcwidget.h b/kalzium/src/molcalcwidget.h new file mode 100644 index 00000000..f09157e6 --- /dev/null +++ b/kalzium/src/molcalcwidget.h @@ -0,0 +1,80 @@ +#ifndef MOLCALCWIDGET_H +#define MOLCALCWIDGET_H +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "molcalcwidgetbase.h" + +#include "moleculeparser.h" + +class KToggleAction; +class KLineEdit; + +class Element; +class MolcalcDialog; +class MoleculeParser; + +/** + * This widget is a small calculator for molecules. + * + * @author Carsten Niehaus + * @author Pino Toscano + * @author Inge Wallin + */ +class MolcalcWidget : public MolcalcWidgetBase +{ + Q_OBJECT + public: + /** + * Constructor + * @param parent parent widget + * @param name name of this widget + */ + MolcalcWidget( QWidget *parent = 0, const char *name = 0 ); + + protected slots: + void slotCalcButtonClicked(); + + private slots: + void clear(); + + private: + /** + * @return the HTML code of an element symbol and its + * subscripted amount. Eg: Mg<sub>2</sub> + */ + QString compositionString( ElementCountMap &_map ); + + /** + * This methods gathers all the data and updates the + * contents of the widget. + */ + void updateUI(); + + private: + MoleculeParser m_parser; + + double m_mass; + bool m_validInput; + ElementCountMap m_elementMap; +}; + + +#endif // MOLCALC_IMPL_H diff --git a/kalzium/src/molcalcwidgetbase.ui b/kalzium/src/molcalcwidgetbase.ui new file mode 100644 index 00000000..a330b773 --- /dev/null +++ b/kalzium/src/molcalcwidgetbase.ui @@ -0,0 +1,135 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>MolcalcWidgetBase</class> +<widget class="QWidget"> + <property name="name"> + <cstring>MolcalcWidgetBase</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>2180</width> + <height>400</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>11</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QLayoutWidget" row="2" column="0"> + <hbox> + <widget class="KLineEdit"> + <property name="name"> + <cstring>formulaEdit</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + <widget class="KPushButton"> + <property name="name"> + <cstring>buttonCalc</cstring> + </property> + <property name="text"> + <string>Calc</string> + </property> + </widget> + </hbox> + </widget> + <widget class="Line" row="3" column="0"> + <property name="name"> + <cstring>line1</cstring> + </property> + <property name="frameShape"> + <enum>HLine</enum> + </property> + <property name="frameShadow"> + <enum>Sunken</enum> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + </widget> + <widget class="QLabel" row="4" column="0"> + <property name="name"> + <cstring>resultComposition</cstring> + </property> + <property name="font"> + <font> + <pointsize>14</pointsize> + <bold>1</bold> + </font> + </property> + <property name="text"> + <string></string> + </property> + <property name="alignment"> + <set>AlignCenter</set> + </property> + </widget> + <spacer row="5" column="0"> + <property name="name"> + <cstring>spacer5_2</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>MinimumExpanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>10</height> + </size> + </property> + </spacer> + <widget class="QLabel" row="6" column="0"> + <property name="name"> + <cstring>resultLabel</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + <widget class="QLabel" row="7" column="0"> + <property name="name"> + <cstring>resultMass</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </grid> +</widget> +<customwidgets> +</customwidgets> +<connections> + <connection> + <sender>buttonCalc</sender> + <signal>pressed()</signal> + <receiver>this</receiver> + <slot>slotCalcButtonClicked()</slot> + </connection> + <connection> + <sender>formulaEdit</sender> + <signal>returnPressed(const QString&)</signal> + <receiver>this</receiver> + <slot>slotCalcButtonClicked()</slot> + </connection> +</connections> +<slots> + <slot access="protected">slotCalcButtonClicked()</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>klineedit.h</includehint> + <includehint>kpushbutton.h</includehint> +</includehints> +</UI> diff --git a/kalzium/src/moleculeparser.cpp b/kalzium/src/moleculeparser.cpp new file mode 100644 index 00000000..183f9769 --- /dev/null +++ b/kalzium/src/moleculeparser.cpp @@ -0,0 +1,304 @@ +/*************************************************************************** + copyright : (C) 2005 by Inge Wallin + email : inge@lysator.liu.se + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + + +#include <ctype.h> + +#include <kdebug.h> + +#include "kalziumdataobject.h" +#include "moleculeparser.h" + + +// ================================================================ +// class ElementCountMap + + + +ElementCountMap::ElementCountMap() +{ + m_map.clear(); +} + + +ElementCountMap::~ElementCountMap() +{ +} + + +ElementCount * +ElementCountMap::search(Element *_element) +{ + QValueList<ElementCount *>::ConstIterator it = m_map.constBegin(); + const QValueList<ElementCount *>::ConstIterator itEnd = m_map.constEnd(); + + for (; it != itEnd; ++it) { + if ((*it)->element() == _element) + return *it; + } + + return 0; +} + + +void +ElementCountMap::add(ElementCountMap &_map) +{ + QValueList<ElementCount *>::ConstIterator it = _map.m_map.constBegin(); + const QValueList<ElementCount *>::ConstIterator itEnd = _map.m_map.constEnd(); + + // Step throught _map and for each element, add it to the current one. + for (; it != itEnd; ++it) { + add((*it)->m_element, (*it)->m_count); + } + +} + + +void +ElementCountMap::add(Element *_element, int _count) +{ + ElementCount *elemCount; + + elemCount = search(_element); + if (elemCount) + elemCount->m_count += _count; + else + m_map.append(new ElementCount(_element, _count)); +} + + +void +ElementCountMap::multiply(int _factor) +{ + Iterator it = begin(); + Iterator itEnd = end(); + + for (; it != itEnd; ++it) + (*it)->multiply(_factor); +} + + +// ================================================================ +// class MoleculeParser + + +MoleculeParser::MoleculeParser() + : Parser() +{ +} + + +MoleculeParser::MoleculeParser(const QString& _str) + : Parser(_str) +{ +} + + +MoleculeParser::~MoleculeParser() +{ + //Parser::~Parser(); +} + + +// ---------------------------------------------------------------- +// public methods + + +// Try to parse the molecule and get the weight of it. +// +// This method also acts as the main loop. + +bool +MoleculeParser::weight(QString _moleculeString, + double *_resultMass, + ElementCountMap *_resultMap) +{ + // Clear the result variables and set m_error to false + _resultMap->clear(); + m_error = false; + *_resultMass = 0.0; + + // Initialize the parsing process, and parse te molecule. + start(_moleculeString); + parseSubmolecule(_resultMass, _resultMap); + + if (nextToken() != -1) + return false; + + if ( m_error )//there was an error in the input... + return false; + + return true; +} + + +// ---------------------------------------------------------------- +// helper methods for the public methods + + +// Parse a submolecule. This is a list of terms. +// + +bool +MoleculeParser::parseSubmolecule(double *_resultMass, + ElementCountMap *_resultMap) +{ + double subMass = 0.0; + ElementCountMap subMap; + + *_resultMass = 0.0; + _resultMap->clear(); + while (parseTerm(&subMass, &subMap)) { + //kdDebug() << "Parsed a term, weight = " << subresult << endl; + + // Add the mass and composition of the submolecule to the total. + *_resultMass += subMass; + _resultMap->add(subMap); + } + + return true; +} + + +// Parse a term within the molecule, i.e. a single atom or a +// submolecule within parenthesis followed by an optional number. +// Examples: Bk, Mn2, (COOH)2 +// +// Return true if correct, otherwise return false. + +// If correct, the mass of the term is returned in *_resultMass, and +// the flattened composition of the molecule in *_resultMap. +// + +bool +MoleculeParser::parseTerm(double *_resultMass, + ElementCountMap *_resultMap) +{ + *_resultMass = 0.0; + _resultMap->clear(); + +#if 0 + kdDebug() << "parseTerm(): Next token = " + << nextToken() << endl; +#endif + if (nextToken() == ELEMENT_TOKEN) { + //kdDebug() << "Parsed an element: " << m_elementVal->symbol() << endl; + *_resultMass = m_elementVal->mass(); + _resultMap->add(m_elementVal, 1); + + getNextToken(); + } + + else if (nextToken() == '(') { + // A submolecule. + + getNextToken(); + parseSubmolecule(_resultMass, _resultMap); + + // Must end in a ")". + if (nextToken() == ')') { + //kdDebug() << "Parsed a submolecule. weight = " << *_result << endl; + getNextToken(); + } + else + return false; + } + else + // Neither an element nor a list within (). + return false; + + // Optional number. + if (nextToken() == INT_TOKEN) { + //kdDebug() << "Parsed a number: " << intVal() << endl; + + *_resultMass *= intVal(); + _resultMap->multiply(intVal()); + + getNextToken(); + } + + kdDebug() << "Weight of term = " << *_resultMass << endl; + return true; +} + + +// ---------------------------------------------------------------- +// protected methods + + +// Extend Parser::getNextToken with elements. + +int +MoleculeParser::getNextToken() +{ + QString elementName; + +#if 0 + kdDebug() << "getNextToken(): Next character = " + << nextChar() << endl; +#endif + + // Check if the token is an element name. + if ('A' <= nextChar() && nextChar() <= 'Z') { + elementName = char(nextChar()); + getNextChar(); + + if ('a' <= nextChar() && nextChar() <= 'z') { + elementName.append(char(nextChar())); + getNextChar(); + } + + // Look up the element from the name.. + m_elementVal = lookupElement(elementName); + if (m_elementVal) + { + m_nextToken = ELEMENT_TOKEN; + } + else + m_nextToken = -1; + } + else + return Parser::getNextToken(); + + return m_nextToken; +} + + +// ---------------------------------------------------------------- +// private methods + + +Element * +MoleculeParser::lookupElement( const QString& _name ) +{ + EList elementList = KalziumDataObject::instance()->ElementList; + + //kdDebug() << "looking up " << _name << endl; + + EList::ConstIterator it = elementList.constBegin(); + const EList::ConstIterator end = elementList.constEnd(); + + for (; it != end; ++it) { + if ( (*it)->symbol() == _name ) { + kdDebug() << "Found element " << _name << endl; + return *it; + } + } + + //if there is an error make m_error true. + m_error = true; + + kdDebug() << k_funcinfo << "no such element, parsing error!: " << _name << endl; + return NULL; +} diff --git a/kalzium/src/moleculeparser.h b/kalzium/src/moleculeparser.h new file mode 100644 index 00000000..c35c71be --- /dev/null +++ b/kalzium/src/moleculeparser.h @@ -0,0 +1,138 @@ +/*************************************************************************** + copyright : (C) 2005 by Inge Wallin + email : inge@lysator.liu.se + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef MOLECULEPARSER_H +#define MOLECULEPARSER_H + +#include "element.h" +#include "parser.h" + +#include <qmap.h> +#include <qvaluelist.h> + + +/** + * @class Element + */ +class ElementCount { + public: + ElementCount(Element *_element, int _count) + { + m_element = _element; + m_count = _count; + } + ElementCount(Element *_element) + { + m_element = _element; + m_count = 0; + } + + ~ElementCount(); + + Element *element() const { return m_element; } + int count() const { return m_count; } + void add(int _count) { m_count += _count; } + void multiply(int _factor) { m_count *= _factor; } + + Element *m_element; + int m_count; +}; + + +/** + * @class ElementCountMap + */ +class ElementCountMap { + public: + ElementCountMap(); + ~ElementCountMap(); + + void clear() { m_map.clear(); } + + ElementCount *search(Element *_element); + void add(ElementCountMap &_map); + void add(Element *_element, int _count); + void multiply(int _factor); + + typedef QValueList<ElementCount*>::Iterator Iterator; + Iterator begin() { return m_map.begin(); } + Iterator end() { return m_map.end(); } + + private: + QValueList<ElementCount*> m_map; +}; + + + +/** + * Parse molecule formulas. + * + * Usage: + * @code + * MoleculeParser parser; + * QString chemical_formula = "C2H5OH"; + * double weight; + * + * if (parser.weight(chemical_formula, &weight)) + * cout << "Weight of " << chemical_formula << " = " << weight << ".\n"; + * else + * cout << "Parse error\n"; + * @endcode + * + * @author Inge Wallin + */ +class MoleculeParser : public Parser { + +public: + static const int ELEMENT_TOKEN = 300; + + MoleculeParser(); + MoleculeParser( const QString& _str); + ~MoleculeParser(); + + /** + * Try to parse the molecule @p molecule and get the weight of it. + * The calculated weight is stored in @p _result. + * + * @return whether the parsing was successful or not + */ + bool weight(QString _moleculeString, + double *_resultMass, + ElementCountMap *_resultMap); + + private: + // Helper functions + bool parseSubmolecule(double *_resultMass, + ElementCountMap *_resultMap); + bool parseTerm(double *_resultMass, + ElementCountMap *_resultMap); + + Element *lookupElement( const QString& _name ); + + QMap<Element*, int> m_elementMap; + + //if this booloean is "true" the parser found an error + bool m_error; + +protected: + + /** + * Extends the standard tokenizer in Parser::getNextToken(). + */ + virtual int getNextToken(); + +private: + Element *m_elementVal; // Valid if m_nextToken == ELEMENT_TOKEN +}; + +#endif diff --git a/kalzium/src/orbitswidget.cpp b/kalzium/src/orbitswidget.cpp new file mode 100644 index 00000000..f79381f0 --- /dev/null +++ b/kalzium/src/orbitswidget.cpp @@ -0,0 +1,257 @@ +/*************************************************************************** + begin : Jun 23 2003 + copyright : (C) 2003, 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "orbitswidget.h" + +#include <kdebug.h> + +//QT-Includes +#include <qpainter.h> +#include <qregexp.h> +#include <qpixmap.h> + +static QStringList hulllist; + +OrbitsWidget::OrbitsWidget( QWidget *parent, const char *name) : QWidget( parent, name ) +{ + if ( hulllist.count() == 0 ) + { + hulllist.append( "1" ); + hulllist.append( "2" ); //Helium + hulllist.append( "2 1" ); + hulllist.append( "2 2" ); + hulllist.append( "2 3" ); + hulllist.append( "2 4" ); + hulllist.append( "2 5" ); + hulllist.append( "2 6" ); + hulllist.append( "2 7" ); + hulllist.append( "2 8" ); //Neon + hulllist.append( "2 8 1" ); + hulllist.append( "2 8 2" ); + hulllist.append( "2 8 3" ); + hulllist.append( "2 8 4" ); + hulllist.append( "2 8 5" ); + hulllist.append( "2 8 6" ); + hulllist.append( "2 8 7" ); + hulllist.append( "2 8 8" ); //Argon + hulllist.append( "2 8 8 1" ); + hulllist.append( "2 8 8 2" );//Calcium + hulllist.append( "2 8 9 2" ); + hulllist.append( "2 8 10 2" ); + hulllist.append( "2 8 11 2" ); + hulllist.append( "2 8 13 1" ); + hulllist.append( "2 8 13 2" );//Manganese + hulllist.append( "2 8 14 2" ); + hulllist.append( "2 8 15 2" ); + hulllist.append( "2 8 16 2" ); + hulllist.append( "2 8 18 1" );//Copper + hulllist.append( "2 8 18 2" ); + hulllist.append( "2 8 18 3" ); + hulllist.append( "2 8 18 4" ); + hulllist.append( "2 8 18 5" ); + hulllist.append( "2 8 18 6" ); + hulllist.append( "2 8 18 7" ); + hulllist.append( "2 8 18 8" );//Krypton + hulllist.append( "2 8 18 8 1" ); + hulllist.append( "2 8 18 8 2" );//Rubidium + hulllist.append( "2 8 18 9 2" ); + hulllist.append( "2 8 18 10 2" );//Zirconium + hulllist.append( "2 8 18 12 1" ); + hulllist.append( "2 8 18 13 1" ); + hulllist.append( "2 8 18 14 1" );//Techneticum + hulllist.append( "2 8 18 15 1" ); + hulllist.append( "2 8 18 16 1" ); + hulllist.append( "2 8 18 18" ); //Palladium + hulllist.append( "2 8 18 18 1" ); + hulllist.append( "2 8 18 18 2" ); + hulllist.append( "2 8 18 18 3" );//Indium + hulllist.append( "2 8 18 18 4" ); + hulllist.append( "2 8 18 18 5" ); + hulllist.append( "2 8 18 18 6" ); + hulllist.append( "2 8 18 18 7" ); + hulllist.append( "2 8 18 18 8" );//Xenon + hulllist.append( "2 8 18 18 8 1" );//Caesium + hulllist.append( "2 8 18 18 8 2" );//Barium + hulllist.append( "2 8 18 18 9 2" ); + hulllist.append( "2 8 18 20 8 2" );//Cerium + hulllist.append( "2 8 18 21 8 2" ); + hulllist.append( "2 8 18 22 8 2" ); + hulllist.append( "2 8 18 23 8 2" ); + hulllist.append( "2 8 18 24 8 2" ); + hulllist.append( "2 8 18 25 8 2" ); + hulllist.append( "2 8 18 25 9 2" );//Gadolinium + hulllist.append( "2 8 18 27 8 2" );//Terbium + hulllist.append( "2 8 18 28 8 2" ); + hulllist.append( "2 8 18 29 8 2" ); + hulllist.append( "2 8 18 30 8 2" ); + hulllist.append( "2 8 18 31 8 2" ); + hulllist.append( "2 8 18 32 8 2" );//Ytterbium + hulllist.append( "2 8 18 32 9 2" );//Lutetium + hulllist.append( "2 8 18 32 10 2" );//Hafnium + hulllist.append( "2 8 18 32 11 2" ); + hulllist.append( "2 8 18 32 12 2" ); + hulllist.append( "2 8 18 32 13 2" ); + hulllist.append( "2 8 18 32 14 2" ); + hulllist.append( "2 8 18 32 15 2" );//Irdium + hulllist.append( "2 8 18 32 17 1" ); + hulllist.append( "2 8 18 32 18 1" ); + hulllist.append( "2 8 18 32 18 2" );//Mercury + hulllist.append( "2 8 18 32 18 3" ); + hulllist.append( "2 8 18 32 18 4" ); + hulllist.append( "2 8 18 32 18 5" ); + hulllist.append( "2 8 18 32 18 6" ); + hulllist.append( "2 8 18 32 18 7" ); + hulllist.append( "2 8 18 32 18 8" );//Radon + hulllist.append( "2 8 18 32 18 8 1" );//Francium + hulllist.append( "2 8 18 32 18 8 2" );//Radium + hulllist.append( "2 8 18 32 18 9 2" );//Actinium + hulllist.append( "2 8 18 32 20 8 2" );//Thorium + hulllist.append( "2 8 18 32 21 8 2" ); + hulllist.append( "2 8 18 32 22 8 2" );//Uran + hulllist.append( "2 8 18 32 23 8 2" ); + hulllist.append( "2 8 18 32 24 8 2" );//Plutonium + hulllist.append( "2 8 18 32 25 8 2" ); + hulllist.append( "2 8 18 32 26 8 2" );//Cm + hulllist.append( "2 8 18 32 27 8 2" ); + hulllist.append( "2 8 18 32 28 8 2" );//Cf + hulllist.append( "2 8 18 32 29 8 2" ); + hulllist.append( "2 8 18 32 30 8 2" );//Fm + hulllist.append( "2 8 18 32 31 8 2" ); + hulllist.append( "2 8 18 32 32 8 2" );//Nobelium + hulllist.append( "2 8 18 32 32 9 2" );//Lawrencium + hulllist.append( "2 8 18 32 32 10 2" ); + hulllist.append( "2 8 18 32 32 11 2" );//Dubnium (105) + hulllist.append( "2 8 18 32 32 12 2" ); + hulllist.append( "2 8 18 32 32 13 2" );//Bohrium + hulllist.append( "2 8 18 32 32 14 2" ); + hulllist.append( "2 8 18 32 32 15 2" );//Mt + hulllist.append( "2 8 18 32 32 16 2" );//Darmstadtium + hulllist.append( "2 8 18 32 32 17 2" );//Roentgenium + } +} + +void OrbitsWidget::setElementNumber( const int num ) +{ + Elemno = num; + + getNumberOfOrbits(); + + update(); +} + +void OrbitsWidget::getNumberOfOrbits() +{ + numOfElectrons.clear(); + QRegExp rxb( "\\s" ); //space + QString o = getNumber(); + + num = 1; + int pos = 0; + int cut = 0; + bool cont = true; + + if ( !o.contains( rxb ) ) //only true for H and He + numOfElectrons.append( o.toInt() ); + else //every other element + { + while ( cont ) + { + + pos = o.find( rxb ); + cut = o.length()-pos-1; + numOfElectrons.append(o.left( pos ).toInt()); + o = o.right( cut ); + num++; + + if ( !o.contains( rxb ) ) + { + numOfElectrons.append( o.toInt() ); + cont = false; + } + } + } +} + +const QString& OrbitsWidget::getNumber() const +{ + return *hulllist.at( Elemno-1 ); +} + +void OrbitsWidget::paintEvent( QPaintEvent* ) +{ + + QPainter DC; + DC.begin( this ); + + int h=height(); + int w=width(); + int w_c=h/10; + int h_c=h/10; + + //the radius of the current orbit + int r; + + //the radius of an 'electron' + int r_electron; + + //make sure the biggest orbit fits in the widget + if ( h < w ) + r = ( h-2*h_c )/2; + else r = ( w-2*w_c )/2; + + r_electron = r/20; //diameter of an electron-circle + + QBrush brush( yellow ); + + int d = 2*r; //Diameter + int ddx = d/(2*num);//difference to the previous circle + + numOfElectrons.prepend( 999 ); + intList::Iterator it = numOfElectrons.end(); + it--; + + for ( int i = 0 ; i < num ; ++i ) + { + int mx = w_c+ddx*i; //the x-coordinate for the current circle + int my = h_c+ddx*i; //the y-coordinate for the current circle + + DC.setBrush( NoBrush ); + DC.setPen( black ); + + //draw the big ellipses in concentric circles + DC.drawEllipse( mx , my , d , d); + + DC.setBrush( brush ); + + for ( int e = 0 ; e < *it ; ++e ) + { + int x = (int)translateToDX( ( double )d/2 , ( double )e , *it); + int y = (int)translateToDY( ( double )d/2 , ( double )e , *it); + + DC.drawEllipse( x + mx + d/2 - r_electron, + y + mx + d/2 - r_electron, + 2*r_electron , + 2*r_electron ); + + } + --it; + d = d-2*ddx; + } +} + + + + +#include "orbitswidget.moc" diff --git a/kalzium/src/orbitswidget.h b/kalzium/src/orbitswidget.h new file mode 100644 index 00000000..831684d0 --- /dev/null +++ b/kalzium/src/orbitswidget.h @@ -0,0 +1,86 @@ +#ifndef ORBITSWIDGET_H +#define ORBITSWIDGET_H +/*************************************************************************** + + orbitswidget.h - description + ------------------- + begin : June 2003 + copyright : (C) 2003, 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + + +#include <qwidget.h> +#include <math.h> + +/** + * @short the widget which displays the Bohr-orbit of the element + * @author Carsten Niehaus + */ +class OrbitsWidget : public QWidget +{ + Q_OBJECT + + public: + OrbitsWidget( QWidget *parent=0 , const char *name =0 ); + + void setElementNumber( const int num ); + + private: + /** + * the elementnumber we are looking at + */ + int Elemno; + + /** + * the number off hulls the atom has + */ + int num; + + typedef QValueList<int> intList; + intList numOfElectrons; + + const QString& getNumber() const; + + /** + * @return the delta of the x-coordinate + * @param r is the radius of the circle + * @param angle is the n'st circle out of num + * @param num is the number of circles + */ + inline double translateToDX( const double r , const double angle , const int num ) + { + return( r * sin( M_PI * angle / num * 2 ) ); + } + + /** + * @return the delta of the y-coordinate + * @param r is the radius of the circle + * @param angle is the n'st circle out of num + * @param num is the number of circles + */ + inline double translateToDY( const double r , const double angle , const int num ) + { + return( r * cos( M_PI * angle / num * 2 ) ); + } + + /** + * sets everything up + */ + void getNumberOfOrbits(); + + protected slots: + virtual void paintEvent( QPaintEvent* ); +}; + +#endif // ORBITSWIDGET_H + diff --git a/kalzium/src/parser.cpp b/kalzium/src/parser.cpp new file mode 100644 index 00000000..19364c73 --- /dev/null +++ b/kalzium/src/parser.cpp @@ -0,0 +1,217 @@ +/*************************************************************************** + copyright : (C) 2005 by Inge Wallin + email : inge@lysator.liu.se + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + + +#include <ctype.h> + +#include <kdebug.h> + +#include "parser.h" + + +Parser::Parser() +{ + start(QString::null); +} + + +Parser::Parser(const QString& _str) +{ + start(_str); +} + + +Parser::~Parser() +{ +} + + +void +Parser::start(const QString& _str) +{ + m_str = _str; + + if (_str.isNull()) { + m_index = -1; + m_nextChar = -1; + m_nextToken = -1; + } + else { + m_index = 0; + m_nextChar = m_str.at(0).latin1(); + getNextToken(); + } +} + + +// ---------------------------------------------------------------- + + +// Skip whitespace, and try to parse the following characters as an int. +// +// Return true if successful. + +bool +Parser::parseInt(int *_result) +{ + int sign = 1; + + skipWhitespace(); + + if (m_nextChar == '-') { + sign = -1; + getNextChar(); + } + + if (!isdigit(m_nextChar)) + return false; + + int result = 0; + while (isdigit(m_nextChar)) { + result = result * 10 + (m_nextChar - '0'); + getNextChar(); + } + + *_result = sign * result; + return true; +} + + +// Skip whitespace, and try to parse the following characters as a +// simple float of the type -?[0-9]+'.'?[0-9]* +// +// Return true if successful. + +bool +Parser::parseSimpleFloat(double *_result) +{ + double sign = 1.0; + + skipWhitespace(); + if (m_nextChar == '-') { + sign = -1.0; + getNextChar(); + } + + if (!isdigit(m_nextChar)) + return false; + + double result = 0.0; + + // The integer. + while (isdigit(m_nextChar)) { + result = result * 10.0 + (double) (m_nextChar - '0'); + getNextChar(); + } + *_result = result; + + if (m_nextChar != '.' || !isdigit(getNextChar())) { + *_result = sign * result; + return true; + } + + double decimal = 0.1; + while (isdigit(m_nextChar)) { + result += decimal * (double) (m_nextChar - '0'); + decimal /= 10.0; + getNextChar(); + } + + *_result = sign * result; + return true; +} + + +// ---------------------------------------------------------------- +// protected methods + + +int +Parser::getNextChar() +{ + if (m_index == -1) + return -1; + + // If end of string, then reset the parser. + if (m_index == (int) m_str.length()) { + m_index = -1; + m_nextChar = -1; + } + else + m_nextChar = m_str.at(++m_index).latin1(); + + // Take care of null-terminated strings. + if (m_nextChar == 0) { + m_index = -1; + m_nextChar = -1; + } + + //kdDebug() << "Parser::getNextChar(): char = " << m_nextChar << endl; + + return m_nextChar; +} + + +int +Parser::skipWhitespace() +{ + while (QChar(m_nextChar).isSpace()) + getNextChar(); + + return m_nextChar; +} + + +// Get the next token. This corresponds to the lexical analyzer of a +// standard parser, e.g as generated by lex. +// +// This basic parser supports integers and simple +// floats. Reimplement this method to extend it. + +int +Parser::getNextToken() +{ + int saveIndex = m_index; + + skipWhitespace(); + if (isdigit(nextChar())) { + // At this point we know that there is a valid number in the + // string. The only question now, is whether it is an int or a + // float. + + parseInt(&m_intVal); + + skipWhitespace(); + if (nextChar() == '.') { + m_index = saveIndex; + + // No need to check since we already know it is correct. + (void) parseSimpleFloat(&m_floatVal); + m_nextToken = FLOAT_TOKEN; + } + else + m_nextToken = INT_TOKEN; + } + + else if (nextChar() != -1) { + // Any character. + m_nextToken = nextChar(); + getNextChar(); + } + + else + // End of string. + m_nextToken = -1; + + return m_nextToken; +} diff --git a/kalzium/src/parser.h b/kalzium/src/parser.h new file mode 100644 index 00000000..f4ec68e7 --- /dev/null +++ b/kalzium/src/parser.h @@ -0,0 +1,105 @@ +/*************************************************************************** + copyright : (C) 2005 by Inge Wallin + email : inge@lysator.liu.se + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#ifndef PARSER_H +#define PARSER_H + +#include <qstring.h> + +/** + * This is a general purpose parser originally written by Inge Wallin. + * + * It is intended to be subclassed; see MoleculeParser. + * + * @author Inge Wallin + */ +class Parser { +public: + // All characters are their own token value per default. + static const int INT_TOKEN = 257; + static const int FLOAT_TOKEN = 258; + // Extend this list in your subclass to make a more advanced parser. + + Parser(); + Parser(const QString& _str); + ~Parser(); + + /** + * Start a new parse. + */ + void start(const QString& _str); + + /** + * Peek at the next character; + */ + int nextChar() const { return m_nextChar; } + + /** + * Peek at the next token. + */ + int nextToken() const { return m_nextToken; } + + /** + * Get the value stored for different types of tokens. + */ + int intVal() const { return m_intVal; } + float floatVal() const { return m_floatVal; } + +private: + + // Try to parse some special datatypes. + bool parseInt(int *_result); + bool parseSimpleFloat(double *_result); + +protected: + + /** + * Make the next character the current one. + */ + int getNextChar(); + + /** + * Make the next non-space character the current one. + */ + int skipWhitespace(); + + /** + * Fetches the next token. + */ + virtual int getNextToken(); + +private: + QString m_str; + int m_index; + int m_nextChar; + + protected: + + // Lexical analysis and token handling. These members need to be + // protected instead of private since we want to be able to + // reimplement getNextToken(). + + /** + * The next token to be used in the parser. + */ + int m_nextToken; + + // Values for the respective token. These could be made into a + // union, but I don't think it is necessary to bother, since they + // are so few and we don't instantiate a lot of copies of the + // parser. + int m_intVal; // Valid if m_nextToken == INT_TOKEN + double m_floatVal; // Valid if m_nextToken == FLOAT_TOKEN +}; + +#endif diff --git a/kalzium/src/periodictableview.cpp b/kalzium/src/periodictableview.cpp new file mode 100644 index 00000000..b466cffa --- /dev/null +++ b/kalzium/src/periodictableview.cpp @@ -0,0 +1,1382 @@ +/*************************************************************************** + * Copyright (C) 2003-2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include "periodictableview.h" +#include "prefs.h" +#include "element.h" +#include "kalziumtip.h" +#include "kalziumutils.h" +#include "kalziumdataobject.h" + +#include <klocale.h> +#include <kdebug.h> +#include <kpixmapeffect.h> +#include <kimageeffect.h> + +#include <qimage.h> +#include <qstring.h> +#include <qtooltip.h> +#include <qwhatsthis.h> +#include <qlabel.h> +#include <qpixmap.h> +#include <qpoint.h> +#include <qcursor.h> +#include <qpainter.h> +#include <qcolor.h> +#include <qrect.h> + +PerodicTableView::PerodicTableView(QWidget *parent, const char *name) + : QWidget(parent, name), m_kalziumTip(0), table(0), table2(0) +{ + d = KalziumDataObject::instance(); + + + // No selection + unSelect(); + +#if 0 + connect( this, SIGNAL( tableClicked( QPoint ) ), + this, SLOT( selectPoint( QPoint ) ) ); +#endif + connect( this, SIGNAL( ToolTip( int ) ), + this, SLOT( slotToolTip( int ) ) ); + + connect( &HoverTimer, SIGNAL( timeout() ), + this, SLOT( slotTransientLabel() ) ); + + connect( &MouseoverTimer, SIGNAL( timeout() ), + this, SLOT( slotMouseover() ) ); + + setMouseTracking( true ); + + //JH: eliminates flicker on redraw + setBackgroundMode( QWidget::NoBackground ); + + m_molcalcIsActive = false; + m_showTooltip = true; + m_showLegend = Prefs::showlegend(); + m_showLegendTooltip = Prefs::tooltip(); + m_timeline = false; + m_showSOM = false; + m_showGradient = false; + m_tooltipsEnabled = Prefs::tooltip(); + + reloadColours(); + + //IUPAC + m_IUPAClist.append( "IA"); + m_IUPAClist.append( "IIA"); + m_IUPAClist.append( "IIIB"); + m_IUPAClist.append( "IVB"); + m_IUPAClist.append( "VB"); + m_IUPAClist.append( "VIB"); + m_IUPAClist.append( "VIIB"); + m_IUPAClist.append( "VIII"); + m_IUPAClist.append( "VIII"); + m_IUPAClist.append( "VIII"); + m_IUPAClist.append( "IB"); + m_IUPAClist.append( "IIB"); + m_IUPAClist.append( "IIIA"); + m_IUPAClist.append( "IVA"); + m_IUPAClist.append( "VA"); + m_IUPAClist.append( "VIA"); + m_IUPAClist.append( "VIIA"); + m_IUPAClist.append( "VIIIA"); + + //oldIUPAC + m_IUPACOLDlist.append( "1A"); + m_IUPACOLDlist.append( "2A"); + m_IUPACOLDlist.append( "3A"); + m_IUPACOLDlist.append( "4A"); + m_IUPACOLDlist.append( "5A"); + m_IUPACOLDlist.append( "6A"); + m_IUPACOLDlist.append( "7A"); + m_IUPACOLDlist.append( "8"); + m_IUPACOLDlist.append( "8"); + m_IUPACOLDlist.append( "8"); + m_IUPACOLDlist.append( "1B"); + m_IUPACOLDlist.append( "2B"); + m_IUPACOLDlist.append( "3B"); + m_IUPACOLDlist.append( "4B"); + m_IUPACOLDlist.append( "5B"); + m_IUPACOLDlist.append( "6B"); + m_IUPACOLDlist.append( "7B"); + m_IUPACOLDlist.append( "0"); + + table = new QPixmap(); + table2 = new QPixmap(); + + m_kalziumTip = new KalziumTip( this ); + + //JH: Start with a full draw + doFullDraw = true; + + // according to carsten :) + setMinimumSize(ELEMENTSIZE*18+1, ELEMENTSIZE*10+30); +} + +void PerodicTableView::reloadColours() +{ + color_s = Prefs::block_s(); + color_p = Prefs::block_p(); + color_d = Prefs::block_d(); + color_f = Prefs::block_f(); + color_1 = Prefs::group_1(); + color_2 = Prefs::group_2(); + color_3 = Prefs::group_3(); + color_4 = Prefs::group_4(); + color_5 = Prefs::group_5(); + color_6 = Prefs::group_6(); + color_7 = Prefs::group_7(); + color_8 = Prefs::group_8(); + color_ba = Prefs::beh_basic(); + color_ac = Prefs::beh_acidic(); + color_neu = Prefs::beh_neutral(); + color_amp = Prefs::beh_amphoteric(); + c_alkalie = Prefs::alkalie(); + c_rare = Prefs::rare(); + c_nonmetal = Prefs::nonmetal(); + c_alkaline = Prefs::alkaline(); + c_other_metal = Prefs::other_metal(); + c_halogene = Prefs::halogene(); + c_transition = Prefs::transition(); + c_noble_gas = Prefs::noble_gas(); + c_metalloid = Prefs::metalloid(); + c_solid = Prefs::color_solid(); + c_vapor = Prefs::color_vapor(); + c_liquid = Prefs::color_liquid(); +} + +void PerodicTableView::slotToolTip( int number ) +{ + if ( !m_showTooltip || !m_tooltipsEnabled ) + return; //don't update if the table is locked + + m_tooltipElementNumber = number; + + QWidget *p = 0; + if ( dynamic_cast<QWidget*>( parent() ) ) + p = static_cast<QWidget*>( parent() ); + + if( p ) + m_kalziumTip->showTip( mapFromGlobal(QCursor::pos()), + d->element(number), + p->width(), + p->height() ); +} + +PerodicTableView::~PerodicTableView(){} + +void PerodicTableView::activateColorScheme( const int nr ) +{ + m_currentScheme = nr; + + EList::ConstIterator it = d->ElementList.begin(); + const EList::ConstIterator itEnd = d->ElementList.end(); + + if ( m_currentScheme == PerodicTableView::NOCOLOUR ) //normal view, no colors + { + const QColor color = Prefs::noscheme(); + while ( it != itEnd ) + { + ( *it )->setElementColor( color ); + ++it; + } + } + else if ( m_currentScheme == PerodicTableView::GROUPS ) //groups view + { + + static QString group; + + while ( it != itEnd ) + { + group = ( *it )->group(); + + if (group == QString("1")) { + ( *it )->setElementColor( color_1 ); + } + if (group == QString("2")){ + ( *it )->setElementColor( color_2 ); + } + if (group == QString("3")){ + ( *it )->setElementColor( color_3 ); + } + if (group == QString("4")){ + ( *it )->setElementColor( color_4 ); + } + if (group == QString("5")){ + ( *it )->setElementColor( color_5 ); + } + if (group == QString("6")){ + ( *it )->setElementColor( color_6 ); + } + if (group == QString("7")){ + ( *it )->setElementColor( color_7 ); + } + if (group == QString("8")){ + ( *it )->setElementColor( color_8 ); + } + + ++it; + } + } + else if ( m_currentScheme == PerodicTableView::BLOCK ) //block view + { + static QString block; + while ( it != itEnd ) + { + block = (*it)->block(); + + if (block == QString("s")) { + (*it)->setElementColor( color_s ); + } + if (block == QString("p")) { + (*it)->setElementColor( color_p ); + } + if (block == QString("d")) { + (*it)->setElementColor( color_d ); + } + if (block == QString("f")) { + (*it)->setElementColor( color_f ); + } + ++it; + } + } + else if ( m_currentScheme == PerodicTableView::ACIDIC ) //acidic beh + { + static QString acidicbeh; + + while ( it != itEnd ) + { + acidicbeh = ( *it )->acidicbeh(); + + if (acidicbeh == QString("0")) { + (*it)->setElementColor( color_ac ); + } + if (acidicbeh == QString("1")){ + (*it)->setElementColor( color_ba ); + } + if (acidicbeh == QString("2")){ + (*it)->setElementColor( color_neu ); + } + if (acidicbeh == QString("3")){ + (*it)->setElementColor( color_amp ); + } + ++it; + } + } + else if ( m_currentScheme == PerodicTableView::FAMILY ) //familiy of the element + { + static QString family; + + while ( it != itEnd ) + { + family = ( *it )->family(); + + if ( family == "Noblegas" ){ + (*it)->setElementColor( c_noble_gas ); + } + if ( family == "Non-Metal" ){ + (*it)->setElementColor( c_nonmetal ); + } + if ( family == "Rare_Earth" ){ + (*it)->setElementColor( c_rare ); + } + if ( family == "Alkaline_Earth" ){ + (*it)->setElementColor( c_alkaline ); + } + if ( family == "Alkali_Earth" ){ + (*it)->setElementColor( c_alkalie ); + } + if ( family == "Transition" ){ + (*it)->setElementColor( c_transition ); + } + if ( family == "Other_Metal" ){ + (*it)->setElementColor( c_other_metal ); + } + if ( family == "Metalloids" ){ + (*it)->setElementColor( c_metalloid ); + } + if ( family == "Halogene" ){ + (*it)->setElementColor( c_halogene ); + } + + ++it; + } + } + +} + +void PerodicTableView::resizeEvent( QResizeEvent * /*e*/ ) +{ + table->resize( width(), height() ); + table2->resize( width(), height() ); + // XXX: I know it isn't the best way, but otherwise the table won't be redrawn + // on repaint... Feel *free* to remove these two lines if you foind a better + // solution... + doFullDraw = true; + update(); +} + +void PerodicTableView::paintEvent( QPaintEvent * /*e*/ ) +{ + QPainter p; + + //JH: I have split the drawing into two pixmaps: table and table2. + //table contains the "static" PerodicTableView table, and does not change very often. + //table2 contains the tooltips and any other dynamic overlays. + //Usually, we can skip the code which renders the table, and just use the + //image stored in table...when doFullDraw==false, the rendering code is skipped. + if ( doFullDraw ) + { + //DEBUG + kdDebug() << "Drawing full table" << endl; + + p.begin( table ); + p.fillRect( 0, 0, width(), height(), paletteBackgroundColor() ); + + // Draw the numbers above the table. + drawNumeration( &p ); + + drawLegend( &p ); + + if ( m_timeline ) + { //use timeline + drawTimeLine(& p ); + p.end(); + + *table2 = *table; + bitBlt( this, 0, 0, table2 ); + return; + } + if ( som() ) + {//use state of matter + drawSOMPerodicTableView(& p ); + p.end(); + + *table2 = *table; + bitBlt( this, 0, 0, table2 ); + return; + } + if ( gradient() ) + {//show a gradient + calculateGradient(& p ); + p.end(); + + *table2 = *table; + bitBlt( this, 0, 0, table2 ); + return; + } + + drawPerodicTableView( &p, m_currentScheme == CRYSTAL ); + + paintCurrentSelection(); + + p.end(); + + doFullDraw = false; + } + + //JH: Ok, now table contains the static PerodicTableView table, and we may need to draw + //a tooltip on it. However, we don't want to ruin the stored table pixmap, + //so let's copy it to table2 and add the tooltip there. + *table2 = *table; + + //JH: Finally, bitBlt the table2 pixmap to the widget + bitBlt( this, 0, 0, table2 ); +} + +void PerodicTableView::paintCurrentSelection() +{ + if (m_currentPoint.x() == -1) + return; + + int x = (m_currentPoint.x()-1)*ELEMENTSIZE; + int y = m_currentPoint.y()*ELEMENTSIZE; + + // make a small gap (ELEMENTSIZE/3) over the rare earths + if (m_currentPoint.y() > 7) y += ELEMENTSIZE/3; + + QPainter p; + p.begin(table); + + QPen pen; + pen.setStyle( DotLine ); + pen.setWidth( 4 ); + pen.setColor( Qt::blue ); + p.setPen( pen ); + + p.drawEllipse( x-10,y-10,ELEMENTSIZE+20,ELEMENTSIZE+20 ); + pen.setWidth( 3 ); + pen.setColor( Qt::red ); + p.setPen( pen ); + p.drawEllipse( x-5,y-5,ELEMENTSIZE+10,ELEMENTSIZE+10 ); + + p.end(); +} + +void PerodicTableView::drawLegendToolTip( QPainter* p ) +{ + kdDebug() << "PerodicTableView::drawLegendToolTip()" << endl; + if(!m_showLegendTooltip || !m_showLegend) return; + + QString text; + + switch ( m_currentScheme ) { + //No Legend drawn as only one colour is used + case PerodicTableView::NOCOLOUR: + break; + case PerodicTableView::BLOCK: + text = i18n( "The periodic table can be split up into four areas:\n the s-, p-, d- and f-Block. The name indicates which orbit\n is being filled last. For example, all elements in the s-block\n fill up the s-orbits." ); + break; + case PerodicTableView::GROUPS: + text = i18n( "The periodic table can be split up into groups:\n All elements in a group show similar behaviour"); + break; + case PerodicTableView::ACIDIC: + text = i18n( "The periodic table can be split up in groups of \nelements with different acidic behaviour."); + break; + case PerodicTableView::FAMILY: + text = i18n( "The periodic table can be split up into several families."); + break; + } + + const int x1 = mapFromGlobal( QCursor::pos() ).x(); + const int y1 = mapFromGlobal( QCursor::pos() ).y(); + + static const int padding = 3; + + QFont fB = KGlobalSettings::generalFont(); + fB.setPointSize( fB.pointSize() + 4 ); + p->setFont( fB ); + + QRect bRect( 0, 0, 1000, 1000 ); + bRect = p->boundingRect( bRect, AlignLeft|AlignTop, text ); + bRect.moveBy( x1, y1 ); + QRect bRectExt = bRect; + bRect.moveBy( padding, padding ); + bRectExt.setWidth( bRectExt.width() + 2 * padding ); + bRectExt.setHeight( bRectExt.height() + 2 * padding ); + + bool vertflipped = false; + if ( bRectExt.bottom() > height() ) + { + bRectExt.moveBy( 0, - bRectExt.height() ); + bRect.moveBy( 0, - bRect.height() - 2 * padding ); + vertflipped = true; + } + if ( bRectExt.right() > width() ) + { + bRectExt.moveBy( - bRectExt.width(), 0 ); + bRect.moveBy( - bRect.width() - 2 * padding, 0 ); + } + else if ( !vertflipped ) + { + bRectExt.moveBy( 15, 0 ); + bRect.moveBy( 15, 0 ); + } + + p->setBrush(Qt::SolidPattern); + p->setBrush( QColor( 255, 255, 220 ) ); + p->drawRect( bRectExt ); + + p->setBrush( Qt::black ); + p->setBrush(Qt::NoBrush); + + p->drawText( bRect, AlignLeft|AlignTop, text ); +} + +void PerodicTableView::drawTimeLine( QPainter* p ) +{ + if ( !p ) return; + kdDebug() << "PerodicTableView::drawTimeLine: " << m_date << endl; + + if ( gradient() ) + activateColorScheme( PerodicTableView::NOCOLOUR ); + + EList::ConstIterator it = d->ElementList.begin(); + const EList::ConstIterator itEnd = d->ElementList.end(); + + bool simple = Prefs::pselook(); + + /** + * this loop iterates through all elements. The Elements + * draw themselfs, the PerodicTableView only tells them to do so + */ + while ( it != itEnd ) + { + if ( ( *it )->date() <= m_date ) + ( *it )->drawSelf( p, simple ); + else + ( *it )->drawGrayedOut( p ); + ++it; + } +} + +void PerodicTableView::drawLegend( QPainter* p ) +{ + if ( !p ) return; + + if ( !m_showLegend ) return; + + /* + * The legend is drawn in the big gap of the table. The gap has + * this size: + * + * width: ELEMENTSIZE * 10 + * height: ELEMENTSIZE * 3 + * + * We need to spare a few pixels on every side so that the legend + * does not collide with the elements + */ + + QFont legendFont = KGlobalSettings::generalFont(); + legendFont.setPointSize( legendFont.pointSize() + 1 ); + p->setFont( legendFont ); + + int legendLeft = ELEMENTSIZE * 5 / 2; + int legendTop = ELEMENTSIZE * 3 / 4; + int legendWidth = ELEMENTSIZE * 9; + int legendHeight = ELEMENTSIZE * 3; + + int x1 = legendLeft + ELEMENTSIZE / 2; + int x2 = legendLeft + ELEMENTSIZE * 5; + + /* + * one field is allowed to be half the gap minus 10 pixel + */ + int fieldsize = ELEMENTSIZE*5-10; + + /* + * one field is a maximum of half the size of an element + */ + int fieldheight = ELEMENTSIZE/2; + + + const int square_w = 18; + const int square_h = 18; + const int textOffset = square_w + 10; + + if ( !m_currentScheme == PerodicTableView::NOCOLOUR ) + p->fillRect(legendLeft, legendTop, legendWidth, legendHeight, + QColor(200, 200, 200)); + + if ( som() ) + { + p->fillRect(x1, fieldheight*2, square_w, square_h, c_solid ); + p->fillRect(x1, fieldheight*3, square_w, square_h, c_liquid ); + p->fillRect(x1, fieldheight*4, square_w, square_h, c_vapor ); + + p->drawText(x1 + textOffset, fieldheight*2, fieldsize, fieldheight, Qt::AlignLeft, i18n("Solid") ); + p->drawText(x1 + textOffset, fieldheight*3, fieldsize, fieldheight, Qt::AlignLeft, i18n("Liquid") ); + p->drawText(x1 + textOffset, fieldheight*4, fieldsize, fieldheight, Qt::AlignLeft, i18n("Vaporous") ); + return; + } + switch ( m_currentScheme ){ + //No Legend to be drawn as only one colour is used + case PerodicTableView::NOCOLOUR: + break; + case PerodicTableView::GROUPS: + p->fillRect( x1, fieldheight*2, square_w, square_h, color_1); + p->fillRect( x1, fieldheight*3, square_w, square_h, color_2); + p->fillRect( x1, fieldheight*4, square_w, square_h, color_3); + p->fillRect( x1, fieldheight*5, square_w, square_h, color_4); + p->fillRect( x2, fieldheight*2, square_w, square_h, color_5); + p->fillRect( x2, fieldheight*3, square_w, square_h, color_6); + p->fillRect( x2, fieldheight*4, square_w, square_h, color_7); + p->fillRect( x2, fieldheight*5, square_w, square_h, color_8 ); + + p->drawText( x1 + textOffset , fieldheight*2, fieldsize, fieldheight, Qt::AlignLeft, i18n("Group 1") ); + p->drawText( x1 + textOffset , fieldheight*3, fieldsize, fieldheight, Qt::AlignLeft, i18n("Group 2")); + p->drawText( x1 + textOffset , fieldheight*4, fieldsize, fieldheight, Qt::AlignLeft, i18n("Group 3")); + p->drawText( x1 + textOffset , fieldheight*5, fieldsize, fieldheight, Qt::AlignLeft, i18n("Group 4")); + p->drawText( x2 + textOffset , fieldheight*2, fieldsize, fieldheight, Qt::AlignLeft, i18n("Group 5")); + p->drawText( x2 + textOffset , fieldheight*3, fieldsize, fieldheight, Qt::AlignLeft, i18n("Group 6")); + p->drawText( x2 + textOffset , fieldheight*4, fieldsize, fieldheight, Qt::AlignLeft, i18n("Group 7")); + p->drawText( x2 + textOffset , fieldheight*5, fieldsize, fieldheight, Qt::AlignLeft, i18n("Group 8")); + break; + case PerodicTableView::BLOCK: + p->fillRect(x1, fieldheight*2, square_w, square_h, color_s ); + p->fillRect(x1, fieldheight*3, square_w, square_h, color_p ); + p->fillRect(x1, fieldheight*4, square_w, square_h, color_d ); + p->fillRect(x1, fieldheight*5, square_w, square_h, color_f ); + + p->drawText(x1 + textOffset, fieldheight*2, fieldsize, fieldheight, Qt::AlignLeft, i18n("s-Block") ); + p->drawText(x1 + textOffset, fieldheight*3, fieldsize, fieldheight, Qt::AlignLeft, i18n("p-Block") ); + p->drawText(x1 + textOffset, fieldheight*4, fieldsize, fieldheight, Qt::AlignLeft, i18n("d-Block") ); + p->drawText(x1 + textOffset, fieldheight*5, fieldsize, fieldheight, Qt::AlignLeft, i18n("f-Block") ); + break; + case PerodicTableView::ACIDIC: + p->fillRect(x1, fieldheight*2, square_w, square_h, color_ba ); + p->fillRect(x1, fieldheight*3, square_w, square_h, color_neu ); + p->fillRect(x1, fieldheight*4, square_w, square_h, color_ac ); + p->fillRect(x1, fieldheight*5, square_w, square_h, color_amp ); + + p->drawText(x1 + textOffset, fieldheight*2, fieldsize, fieldheight, Qt::AlignLeft, i18n("Basic") ); + p->drawText(x1 + textOffset, fieldheight*3, fieldsize, fieldheight, Qt::AlignLeft, i18n("Neutral") ); + p->drawText(x1 + textOffset, fieldheight*4, fieldsize, fieldheight, Qt::AlignLeft, i18n("Acidic") ); + p->drawText(x1 + textOffset, fieldheight*5, fieldsize, fieldheight, Qt::AlignLeft, i18n("both acidic and basic behaviour","Amphoteric") ); + break; + case PerodicTableView::FAMILY: + p->fillRect( x1, fieldheight*2, square_w, square_h, c_alkaline ); + p->fillRect( x2, fieldheight*2, square_w, square_h, c_rare ); + p->fillRect( x1, fieldheight*3, square_w, square_h, c_nonmetal ); + p->fillRect( x2, fieldheight*3, square_w, square_h, c_alkalie ); + p->fillRect( x1, fieldheight*4, square_w, square_h, c_other_metal ); + p->fillRect( x2, fieldheight*4, square_w, square_h, c_halogene ); + p->fillRect( x1, fieldheight*5, square_w, square_h, c_transition ); + p->fillRect( x2, fieldheight*5, square_w, square_h, c_noble_gas ); + p->fillRect( x1, fieldheight*6, square_w, square_h, c_metalloid ); + + p->drawText( x1 + textOffset , fieldheight*2, fieldsize, fieldheight, Qt::AlignLeft, i18n("Alkaline") ); + p->drawText( x2 + textOffset , fieldheight*2, fieldsize, fieldheight, Qt::AlignLeft, i18n("Rare Earth")); + p->drawText( x1 + textOffset , fieldheight*3, fieldsize, fieldheight, Qt::AlignLeft, i18n("Non-Metals")); + p->drawText( x2 + textOffset , fieldheight*3, fieldsize, fieldheight, Qt::AlignLeft, i18n("Alkalie-Metals")); + p->drawText( x1 + textOffset , fieldheight*4, fieldsize, fieldheight, Qt::AlignLeft, i18n("Other Metal")); + p->drawText( x2 + textOffset , fieldheight*4, fieldsize, fieldheight, Qt::AlignLeft, i18n("Halogene")); + p->drawText( x1 + textOffset , fieldheight*5, fieldsize, fieldheight, Qt::AlignLeft, i18n("Transition Metal")); + p->drawText( x2 + textOffset , fieldheight*5, fieldsize, fieldheight, Qt::AlignLeft, i18n("Noble Gas")); + p->drawText( x1 + textOffset , fieldheight*6, fieldsize, fieldheight, Qt::AlignLeft, i18n("Metalloid")); + break; + case PerodicTableView::CRYSTAL: + p->fillRect(x1, fieldheight*2, square_w, square_h, Qt::cyan ); + p->fillRect(x1, fieldheight*3, square_w, square_h, Qt::red ); + p->fillRect(x1, fieldheight*4, square_w, square_h, Qt::yellow ); + p->fillRect(x1, fieldheight*5, square_w, square_h, Qt::green ); + p->fillRect(x1, fieldheight*6, square_w, square_h, Qt::white ); + + p->drawText(x1 + textOffset, fieldheight*2, fieldsize, fieldheight, Qt::AlignLeft, i18n("Own") ); + p->drawText(x1 + textOffset, fieldheight*3, fieldsize, fieldheight, Qt::AlignLeft, i18n("bcc, body centered cubic") ); + p->drawText(x1 + textOffset, fieldheight*4, fieldsize, fieldheight, Qt::AlignLeft, i18n("hdp, hexagonal") ); + p->drawText(x1 + textOffset, fieldheight*5, fieldsize, fieldheight, Qt::AlignLeft, i18n("ccp, cubic close packed") ); + p->drawText(x1 + textOffset, fieldheight*6, fieldsize, fieldheight, Qt::AlignLeft, i18n("Unknown") ); + break; + } +} + +void PerodicTableView::drawNumeration( QPainter* p ) +{ + if ( !p ) return; + + switch(m_num){ + case PerodicTableView::NO: + return; + case PerodicTableView::CAS: + for(int i = 0; i < 18 ; ++i ) + { + p->drawText( i*ELEMENTSIZE,0 ,ELEMENTSIZE,ELEMENTSIZE, Qt::AlignCenter, QString::number(i+1)); + } + break; + case PerodicTableView::IUPAC: + for(int i = 0; i < 18 ; ++i ) + { + p->drawText( i*ELEMENTSIZE,0 ,ELEMENTSIZE,ELEMENTSIZE, Qt::AlignCenter, m_IUPAClist[i]); + } + break; + case PerodicTableView::IUPACOLD: + for(int i = 0; i < 18 ; ++i ) + { + p->drawText( i*ELEMENTSIZE,0 ,ELEMENTSIZE,ELEMENTSIZE, Qt::AlignCenter, m_IUPACOLDlist[i]); + } + break; + } +} + + +void PerodicTableView::drawSOMPerodicTableView( QPainter* p ) +{ + EList::ConstIterator it = d->ElementList.begin(); + const EList::ConstIterator itEnd = d->ElementList.end(); + + while ( it != itEnd ) + { + ( *it )->drawStateOfMatter( p, m_temperature ); + ++it; + } + +} + +void PerodicTableView::slotTransientLabel() +{ + QPoint point = ElementUnderMouse(); + + int X = point.x(); + int Y = point.y(); + + const int num = ElementNumber( X, Y ); + if ( num ) + emit ToolTip( num ); + else if ( pointerOnLegend( X, Y ) ) //show the tooltip for the lengend + { + m_showLegendTooltip = true; + update(); + } + else + m_showLegendTooltip = false; +} + +void PerodicTableView::mousePressEvent( QMouseEvent *) +{ + if( m_kalziumTip->isVisible() ) + m_kalziumTip->hide(); +} + +void PerodicTableView::mouseMoveEvent( QMouseEvent * /*mouse*/ ) +{ + //JH: only update() if we were showing a tooltip + if ( m_tooltipElementNumber || m_showLegendTooltip ) + { + //this invalidates the number. If the mouse + //is moved, the number is invalid. + m_tooltipElementNumber = 0; + m_showLegendTooltip = false; + update(); + } + + if( m_kalziumTip->isVisible() ) + { +// kdDebug()<< "visible" << endl; + QPoint point = ElementUnderMouse(); + + int X = point.x(); + int Y = point.y(); + + const int num = ElementNumber( X, Y ); + + if ( num != 0 ) + emit ToolTip( num ); + else + m_kalziumTip->hide(); + } + + HoverTimer.start( 500, true ); //JH: true = run timer once, not continuously + MouseoverTimer.start( 200, true ); //JH: true = run timer once, not continuously +} + +bool PerodicTableView::pointerOnLegend(int X, int Y) +{ + if ( X > 2 && X < 13 ) + { + if ( Y < 4 && Y > 0 ) + { + return true; + } + } + + return false; +} + +void PerodicTableView::mouseReleaseEvent( QMouseEvent *mouse ) +{ + ///first: find out the position + int X = mouse->x()/ELEMENTSIZE; + + //for the y-position I need to substract ELEMENTSIZE pixel because + //the whole table doesn't start at (0,0) but at (0,ELEMENTSIZE) + int Y = mouse->y()-ELEMENTSIZE; + + // ignore clicks on the small gap over rare earth + if (Y >= (ELEMENTSIZE*7) && Y < (ELEMENTSIZE*7+ELEMENTSIZE/3+1)) return; + + // mind the gap! + if (Y > (ELEMENTSIZE*7)) Y -= ELEMENTSIZE/3; + Y /= ELEMENTSIZE; + + X += 1; + Y += 1; + + QPoint point( X,Y ); + emit tableClicked( point ); + + const int num = ElementNumber( X, Y ); + + //kdDebug() << "Element clicked: " << num << endl; + + //If no element was clicked ElementNumber() will return 0 + if ( num ) { + emit ElementClicked( num ); + selectPoint( point ); + } +} + +int PerodicTableView::ElementNumber( int X, int Y ) +{ + //from this on I can use X and Y. Both contain the position of an element in the + //complete PerodicTableView. Eg, He is 1,18 and Na is 2,1 + + CList::ConstIterator it = d->CoordinateList.begin(); + const CList::ConstIterator itEnd = d->CoordinateList.end(); + + int counter = 1; + while ( it != itEnd ) + {//iterate through the list of coordinates and compare the x/y values. + //finally, if the 20'es iterator has the same coordinates Element 20 + //has been clicked. + + coordinate c = *it; + if ( c.x == X ) + { + if ( c.y == Y ) + {//coordinates match. Return the number of the element. + return counter; + } + } + ++it; + ++counter; + } + + return 0; +} + + +void PerodicTableView::unSelect() +{ + m_currentPoint = QPoint(-1, -1); + + // Full draw needed to redraw the select mark. + setFullDraw(); + update(); +} + +void PerodicTableView::selectPoint( const QPoint& point ) +{ + kdDebug() << "PerodicTableView::selectPoint " << point << endl; + + m_currentPoint = point; + + // Full draw needed to redraw the select mark. + setFullDraw(); + update(); +} + +void PerodicTableView::selectElement( int num ) +{ + kdDebug() << "PerodicTableView::selectElement " << num << endl; + + selectPoint( d->element( num )->coords() ); +} + +void PerodicTableView::drawPerodicTableView( QPainter* p, bool isCrystal ) +{ + EList::ConstIterator it = d->ElementList.begin(); + const EList::ConstIterator itEnd = d->ElementList.end(); + + bool simple = Prefs::pselook(); + /** + * this loop iterates through all elements. The Elements + * draw themselfs, the PerodicTableView only tells them to do so + */ + while ( it != itEnd ) + { + ( *it )->drawSelf( p, simple, isCrystal ); + ++it; + } +} + +//CN This is called for *every* drawing of the table. This means +//a lot overload... I would be better to chache the values in +//member variables an only check if they need an update. +void PerodicTableView::calculateGradient( QPainter *p ) +{ + EList::ConstIterator it = d->ElementList.begin(); + const EList::ConstIterator itEnd = d->ElementList.end(); + + QValueList<double> tmpList; + switch ( m_gradientType ) + { + case Element::ATOMICRADIUS: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->radius(Element::ATOMIC) ); + } + break; + case Element::COVALENTRADIUS: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->radius(Element::COVALENT) ); + } + break; + case Element::VDWRADIUS: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->radius(Element::VDW) ); + } + break; + case Element::MASS: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->mass() ); + } + break; + case Element::DENSITY: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->density() ); + } + break; + case Element::BOILINGPOINT: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->boiling() ); + } + break; + case Element::MELTINGPOINT: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->melting() ); + } + break; + case Element::EN: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->electroneg() ); + } + break; + case Element::EA: + for (; it != itEnd; ++it ) + { + tmpList.append( ( *it )->electroaf() ); + } + break; + } + + QValueList<double>::iterator dit = tmpList.begin(); + const QValueList<double>::iterator ditEnd = tmpList.end(); + + double tmpMin = *dit; + double tmpMax = *dit; + for ( ; dit != ditEnd; ++dit ) + { + if (( *dit ) == 0 ) continue; + if ( ( *dit ) < tmpMin ) + tmpMin = *dit; + if ( ( *dit ) > tmpMax ) + tmpMax = *dit; + } + + //now draw the gradient-table + drawGradientPerodicTableView( p, tmpMin, tmpMax ); +} + + + +void PerodicTableView::drawGradientPerodicTableView( QPainter *p, const double min, const double max ) +{ + QString title = QString::null; + + const double var = max-min; + EList::ConstIterator it = d->ElementList.begin(); + const EList::ConstIterator itEnd = d->ElementList.end(); + + + /** + * this loop iterates through all elements. The Elements + * draw themselves, the PerodicTableView only tells them to do so + */ + it = d->ElementList.begin(); + switch ( m_gradientType ) + { + case Element::ATOMICRADIUS: + title = i18n( "Gradient: Atomic Radius" ); + while ( it != d->ElementList.end() ) + { + double value = ( *it )->radius( Element::ATOMIC ); + double coeff = ( value - min )/var; + + drawGradientButton( p, *it, coeff, value, min ); + + ++it; + } + break; + case Element::VDWRADIUS: + title = i18n( "Gradient: van der Waals Radius" ); + while ( it != d->ElementList.end() ) + { + double value = ( *it )->radius( Element::VDW ); + double coeff = ( value - min )/var; + + drawGradientButton( p, *it, coeff, value, min ); + + ++it; + } + break; + case Element::COVALENTRADIUS: + title = i18n( "Gradient: Covalent Radius" ); + while ( it != d->ElementList.end() ) + { + double value = ( *it )->radius( Element::COVALENT ); + double coeff = ( (*it)->radius(Element::COVALENT) - min )/var; + + drawGradientButton( p, *it, coeff, value, min ); + + ++it; + } + break; + case Element::MASS: + title = i18n( "Gradient: Atomic Mass" ); + while ( it != d->ElementList.end() ) + { + double coeff = ( (*it)->mass() - min )/var; + drawGradientButton( p, *it, coeff, ( *it )->mass(), min ); + + ++it; + } + break; + case Element::DENSITY: + title = i18n( "Gradient: Atomic Density" ); + while ( it != d->ElementList.end() ) + { + double coeff = ( (*it)->density() - min )/var; + + drawGradientButton( p, *it, coeff, ( *it )->density(), min ); + ++it; + } + break; + case Element::BOILINGPOINT: + title = i18n( "Gradient: Boiling point" ); + while ( it != d->ElementList.end() ) + { + double coeff = ( (*it)->boiling() - min )/var; + drawGradientButton( p, *it, coeff, ( *it )->boiling(), min ); + + ++it; + } + break; + case Element::MELTINGPOINT: + title = i18n( "Gradient: Melting point" ); + while ( it != d->ElementList.end() ) + { + double coeff = ( (*it)->melting() - min )/var; + drawGradientButton( p, *it, coeff, ( *it )->melting(), min ); + + ++it; + } + break; + case Element::EN: + title = i18n( "Gradient: Electronegativity" ); + while ( it != d->ElementList.end() ) + { + double coeff = ( (*it)->electroneg() - min )/var; + drawGradientButton( p, *it, coeff, ( *it )->electroneg(), min ); + + ++it; + } + break; + case Element::EA: + title = i18n( "Gradient: Electron affinity" ); + double tmpVar = -1*(min - max); + while ( it != d->ElementList.end() ) + { + if( (*it)->electroaf() == 0.0) + drawGradientButton( p, *it,-1.0, (*it )->electroaf(), min ); + else + { + double coeff = ( max - (*it)->electroaf() )/tmpVar; + drawGradientButton( p, *it, coeff, (*it )->electroaf(), min ); + } + + ++it; + } + break; + } + + // Now draw the legend. + int x = ELEMENTSIZE*2+5; + int y = 5; + //int w = ELEMENTSIZE*10-5; + //int h = ELEMENTSIZE*4-5; + + // Create the gradient image. + QSize s( ELEMENTSIZE*7+20, 20 ); + QImage img = KImageEffect::gradient ( s, Qt::white, Qt::red, + KImageEffect::HorizontalGradient ); + QPixmap pm( img ); + + /** + * now find the optimum stringsize for the caption + * i18n( "Gradient: van der Waals Radius" ); is at least + * for english the longest possible string. As "van der Waals" + * is a name it should be the same in all languages and be + * probably always the longest string + */ + QString tmp = i18n( "Gradient: van der Waals Radius" ); + QRect rect(x+5, y+50, ELEMENTSIZE*10,20); + QFont font = p->font(); + int maxSize = KalziumUtils::maxSize( tmp, rect, p->font(), p, 8, 24 ); + kdDebug() << "maxSize: " << maxSize << endl; + font.setPointSize(maxSize); + p->setFont(font); + + p->drawText( x+5, y+50, ELEMENTSIZE*10,20, Qt::AlignCenter, title ); + p->drawPixmap( x+50, y+80, pm ); + + if ( m_gradientType == Element::EA ) + { + // FIXME: In the lines below, "30" is the max allowed text + // height. This should be calculated from the font + // metrics, not hard coded. + p->drawText( x+50,y+100,ELEMENTSIZE*7+20,30, Qt::AlignRight, QString::number( min ) ); + p->drawText( x+50,y+100,ELEMENTSIZE*7+20,30, Qt::AlignLeft, QString::number( max ) ); + } + else + { + p->drawText( x+50,y+100,ELEMENTSIZE*7+20,30, Qt::AlignRight, QString::number( max ) ); + p->drawText( x+50,y+100,ELEMENTSIZE*7+20,30, Qt::AlignLeft, QString::number( min ) ); + + } +} + +QPoint PerodicTableView::ElementUnderMouse() +{ + int X = mapFromGlobal( QCursor::pos() ).x()/ELEMENTSIZE; + int Y = mapFromGlobal( QCursor::pos() ).y( )-ELEMENTSIZE; + + // mind the gap over rare earth! + if (Y >= (ELEMENTSIZE*7) && Y < (ELEMENTSIZE*7+ELEMENTSIZE/3+1)) return QPoint( 0, 0 ); + + if (Y > (ELEMENTSIZE*7)) Y -= ELEMENTSIZE/3; + + Y /= ELEMENTSIZE; + + X += 1; + Y += 1; + + return QPoint( X,Y ); +} + + +void PerodicTableView::slotMouseover() +{ + QPoint point = ElementUnderMouse(); + + int num = ElementNumber( point.x(), point.y() ); + if ( num ) + emit MouseOver( num ); +} + +void PerodicTableView::drawGradientButton( QPainter *p, Element* e, double coeff, double value, double minValue ) +{ + if ( value >= minValue && coeff != -1.0) + { + QColor c = calculateColor( coeff ); + QString v = KalziumUtils::localizedValue( KalziumUtils::strippedValue( value ), 6 ); + e->drawGradient( p, v, c ); + } + else + e->drawGradient( p, i18n("It means: Not Available. Translators: keep it as short as you can!", "N/A"), Qt::lightGray ); +} + +QColor PerodicTableView::calculateColor( const double coeff ) +{ + const QColor color2 = Qt::white; + const QColor color1 = Qt::red; + + int red = (int)( (color1.red() - color2.red()) * coeff + color2.red() ); + int green = (int)( (color1.green() - color2.green()) * coeff + color2.green() ); + int blue = (int)( (color1.blue() - color2.blue()) * coeff + color2.blue() ); + + return QColor( red, green, blue ); +} + +void PerodicTableView::setLook( PerodicTableView::SCHEMETYPE type, int which ) +{ + m_currentScheme = type; + + EList::ConstIterator it = d->ElementList.begin(); + const EList::ConstIterator itEnd = d->ElementList.end(); + + switch ( type ) + { + case NOCOLOUR: + { + const QColor color = Prefs::noscheme(); + while ( it != itEnd ) + { + ( *it )->setElementColor( color ); + ++it; + } + setGradient( false ); + break; + } + case PerodicTableView::GROUPS: // group view + { + QString group; + + while ( it != itEnd ) + { + group = ( *it )->group(); + + if (group == QString("1")) { + ( *it )->setElementColor( color_1 ); + } + if (group == QString("2")){ + ( *it )->setElementColor( color_2 ); + } + if (group == QString("3")){ + ( *it )->setElementColor( color_3 ); + } + if (group == QString("4")){ + ( *it )->setElementColor( color_4 ); + } + if (group == QString("5")){ + ( *it )->setElementColor( color_5 ); + } + if (group == QString("6")){ + ( *it )->setElementColor( color_6 ); + } + if (group == QString("7")){ + ( *it )->setElementColor( color_7 ); + } + if (group == QString("8")){ + ( *it )->setElementColor( color_8 ); + } + + ++it; + } + setGradient( false ); + break; + } + case PerodicTableView::BLOCK: //block view + { + static QString block; + while ( it != itEnd ) + { + block = (*it)->block(); + + if (block == QString("s")) { + (*it)->setElementColor( color_s ); + } + if (block == QString("p")) { + (*it)->setElementColor( color_p ); + } + if (block == QString("d")) { + (*it)->setElementColor( color_d ); + } + if (block == QString("f")) { + (*it)->setElementColor( color_f ); + } + ++it; + } + setGradient( false ); + break; + } + case PerodicTableView::ACIDIC: //acidic beh + { + static QString acidicbeh; + while ( it != itEnd ) + { + acidicbeh = ( *it )->acidicbeh(); + + if (acidicbeh == QString("0")) { + (*it)->setElementColor( color_ac ); + } + if (acidicbeh == QString("1")){ + (*it)->setElementColor( color_ba ); + } + if (acidicbeh == QString("2")){ + (*it)->setElementColor( color_neu ); + } + if (acidicbeh == QString("3")){ + (*it)->setElementColor( color_amp ); + } + ++it; + } + setGradient( false ); + break; + } + case PerodicTableView::FAMILY: //familiy of the element + { + static QString family; + + while ( it != itEnd ) + { + family = ( *it )->family(); + + if ( family == "Noblegas" ){ + (*it)->setElementColor( c_noble_gas ); + } + if ( family == "Non-Metal" ){ + (*it)->setElementColor( c_nonmetal ); + } + if ( family == "Rare_Earth" ){ + (*it)->setElementColor( c_rare ); + } + if ( family == "Alkaline_Earth" ){ + (*it)->setElementColor( c_alkaline ); + } + if ( family == "Alkali_Earth" ){ + (*it)->setElementColor( c_alkalie ); + } + if ( family == "Transition" ){ + (*it)->setElementColor( c_transition ); + } + if ( family == "Other_Metal" ){ + (*it)->setElementColor( c_other_metal ); + } + if ( family == "Metalloids" ){ + (*it)->setElementColor( c_metalloid ); + } + if ( family == "Halogene" ){ + (*it)->setElementColor( c_halogene ); + } + + ++it; + } + setGradient( false ); + break; + } + case CRYSTAL: + { + QString structure; + while ( it != itEnd ) + { + structure = ( *it )->crystalstructure(); + if ( structure == "own") + (*it)->setElementColor( Qt::cyan ); + else if ( structure == "bcc" ) + (*it)->setElementColor( Qt::red ); + else if ( structure == "hdp" ) + (*it)->setElementColor( Qt::yellow ); + else if ( structure == "ccp" ) + (*it)->setElementColor( Qt::green ); + else + (*it)->setElementColor( Qt::white ); + ++it; + } + setGradient( false ); + break; + } + case GRADIENT: + { + setGradient( true ); + setGradientType( which ); + break; + } + default: + ; + } + + Prefs::setColorschemebox( type ); + Prefs::writeConfig(); + + //JH: redraw the full table next time + setFullDraw(); + update(); +} + +#include "periodictableview.moc" diff --git a/kalzium/src/periodictableview.h b/kalzium/src/periodictableview.h new file mode 100644 index 00000000..632f5d57 --- /dev/null +++ b/kalzium/src/periodictableview.h @@ -0,0 +1,523 @@ +/*************************************************************************** + * Copyright (C) 2003-2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#ifndef PerodicTableView_H +#define PerodicTableView_H + +class QLabel; +class QPixmap; +class QPoint; +class QVBoxLayout; +class Element; +class KalziumDataObject; +class KalziumTip; + +#include <qvaluelist.h> +#include <qwidget.h> +#include <qtimer.h> + +// A PerodicTableView is ... +/** + * @short basic class for the specific PerodicTableViews + * @author Carsten Niehaus + */ +class PerodicTableView : public QWidget +{ + Q_OBJECT + + public: + /** + * Constructor + * @param parent parent widget + * @param name name of this widget + */ + PerodicTableView( QWidget *parent = 0, const char *name = 0); + ~PerodicTableView(); + + enum SCHEMETYPE + { + NOCOLOUR = 0, + GROUPS, + BLOCK, + ACIDIC, + FAMILY, + GRADIENT, + CRYSTAL + }; + + enum NUMERATIONTYPE + { + NO=0, /// no numeration + CAS = 1, /// Chemical Abstract Service + IUPAC = 2, /// International Union of Pure and Applied Chemistry + IUPACOLD = 3 /// old IUPAC numeration + }; + + /** + * if this mode is activated a click on a button will not open + * a information dialog + */ + virtual void activateMolcalcmode( bool mode ){ + m_molcalcIsActive = mode; + } + + /** + * @return if the molcalc mode is active or not + */ + virtual bool molcalcMode() const{ + return m_molcalcIsActive; + } + + /** + * sets the NUMERATIONTYPE @p num of the periodic table + * @see NUMERATIONTYPE + */ + void setNumerationType( NUMERATIONTYPE num ){ + m_num = num; + update(); + } + /** + * @return whether the tooltips are enabled + */ + bool tooltipsEnabled() const{ + return m_tooltipsEnabled; + } + + /** + * if @p enabled is true the tooltips + * will be enabled + */ + void setTooltipsEnabled( bool enabled ){ + m_tooltipsEnabled = enabled; + } + + /** + * This method sets the colors of the PerodicTableView. + * @param nr takes 5 different values: + * @li normal view + * @li groups + * @li blocks + * @li state of matter + * @li acidic behavior + * @li family view + */ + void activateColorScheme( const int nr); + + /** + * @return the short and descriptive name of this PerodicTableView + */ + QString shortName() const{ + return m_ShortName; + } + + /** + * if @p show is true the tooltip will be displayed + */ + void setShowTooltip( bool show ){ + m_showTooltip = show; + } + + /** + * @return whether tooltips will be displayed + */ + bool showTooltip() const { + return m_showTooltip; + } + + /** + * @return whether if the SOM is active or not + */ + bool som() const{ + return m_showSOM; + } + + void activateSOMMode( bool som ){ + m_showSOM = som; + setFullDraw(); + update(); + } + + /** + * @return if the gradient mode is active + */ + bool gradient() const{ + return m_showGradient; + } + + /** + * Defines if the gradient mode will be activated or + * deactivated + * @param gradient defines if the gradient mode should be activated or not + */ + void setGradient( bool gradient ){ + m_showGradient = gradient; + setFullDraw(); + update(); + } + + //XXX can't use Element::TYPE here... why? + void setGradientType( int type ){ + m_gradientType = type; + } + + /** + * if false, the user disabled tooltips + */ + bool m_tooltipsEnabled; + + bool m_showLegendTooltip; + + /** + * activates or deactivates the legend + */ + void showLegend( bool show ){ + m_showLegend = show; + } + + bool showLegend() const{ + return m_showLegend; + } + + bool timeline() const{ + return m_timeline; + } + + void setTimeline( bool timeline ){ + if ( m_timeline != timeline ) + m_timeline = timeline; + } + + int date() const{ + return m_date; + } + + /** + * load the colours from the config file. This is done + * on startup and everytime the user changed the configuration + */ + void reloadColours(); + + /** + * JH: Draw the full table next time + */ + void setFullDraw(){ + doFullDraw = true; + } + + /** + * @param type set the scheme + * @param which set the type of gradient + * @see Element::TYPE + */ + void setLook( PerodicTableView::SCHEMETYPE type, int which = 0 ); + + /** + * This method paints the marker around the currently selected + * element + */ + virtual void paintCurrentSelection(); + + private: + /** + * if true the tooltips will be displayed + */ + bool m_showTooltip; + + /** + * the type of the gradient. + * @see Element::TYPE + */ + int m_gradientType; + + /** + * calculates the min and max values to prepare the painting + */ + void calculateGradient( QPainter* ); + + /** + * @return true if the mouse is over the legend area + */ + bool pointerOnLegend(int,int); + + /** + * @param p The painter for drawing + * @param e the element which is to be drawn + * @param coeff ? + * @param value the value + * @param minValue the smallest of all the values + */ + void drawGradientButton( QPainter* p, Element* e, double coeff, double value, double minValue ); + + /** + * calculates the color of an element which has a value which + * is @p percentage of the maximum value. This will be the + * color used in the gradient view for an element. + */ + QColor calculateColor( const double percentage ); + + /** + * the date used in the timeline + */ + int m_date; + + /** + * the current colour scheme + */ + int m_currentScheme; + + KalziumTip* m_kalziumTip; + bool m_timeline; + + /** + * the temperature of the table (for the SOM-feature) + */ + double m_temperature; + + /** + * if true the State Of Matter will be shown + */ + bool m_showSOM; + + /** + * if true the gradients will be shown + */ + bool m_showGradient; + + /** + * timer used for the tooltop + */ + QTimer HoverTimer, + MouseoverTimer; + + KalziumDataObject *d; + + /** + * the number of the element the mouse-cursor is over + */ + int m_tooltipElementNumber; + + /** + * @return the number of the element at position x/y. If there + * is no element it will return 0 + */ + int ElementNumber( int x, int y ); + + /** + * @return the coordinates of the element under the mouseCursor. + * For example, H will be 1/1 and Li will be 1/2 + */ + QPoint ElementUnderMouse(); + + /** + * the currently selected element (the x/y-coordinates) + */ + QPoint m_currentPoint; + + void mouseReleaseEvent( QMouseEvent* ); + void mousePressEvent( QMouseEvent* ); + void mouseMoveEvent( QMouseEvent* ); + + QStringList m_IUPAClist; + QStringList m_IUPACOLDlist; + + /** + * if the the legend will be displayed + */ + bool m_showLegend; + + /** + * this is a short, descriptive name of the PerodicTableView + */ + QString m_ShortName; + + /** + * true if the molcalc-mode is active + */ + bool m_molcalcIsActive; + + /** + * the type of the nummeration ( NO, CAS, IUPACOLD, IUPAC ) + */ + NUMERATIONTYPE m_num; + + /** + * implements double buffering of the widget. + */ + QPixmap *table; // The basic PerodicTableView + QPixmap *table2; // Basic PerodicTableView + extra data such as tooltip, etc + + /** + * used for bitBlit. If true the complete table will be drawn + */ + bool doFullDraw; + + + //I am holding all colours as member so that they don't need to + //be reloaded on every reload + QColor color_s;//Blocks + QColor color_p; + QColor color_d; + QColor color_f; + QColor color_1;//Groups + QColor color_2; + QColor color_3; + QColor color_4; + QColor color_5; + QColor color_6; + QColor color_7; + QColor color_8; + QColor color_ba;//Acidic + QColor color_ac; + QColor color_neu; + QColor color_amp; + QColor c_alkalie;//Family + QColor c_rare; + QColor c_nonmetal; + QColor c_alkaline; + QColor c_other_metal; + QColor c_halogene; + QColor c_transition; + QColor c_noble_gas; + QColor c_metalloid; + QColor c_liquid; + QColor c_solid; + QColor c_vapor; + + protected: + virtual void paintEvent( QPaintEvent *e ); + + /** + * draw the tooltip for the legend + */ + virtual void drawLegendToolTip( QPainter *p ); + + virtual void drawTimeLine( QPainter *p ); + + /** + * called if the user resized the table + */ + virtual void resizeEvent( QResizeEvent *e ); + + /** + * the central place for the drawing of the table + */ + virtual void drawPerodicTableView( QPainter* p, bool isCrystal ); + + /** + * draw a gradient of the type @p type + */ + virtual void drawGradientPerodicTableView( QPainter* p, const double min, const double max ); + + /** + * draw the state of matter + */ + virtual void drawSOMPerodicTableView( QPainter* p ); + + /** + * draw the legend + */ + virtual void drawLegend( QPainter* p ); + + /** + * draw the numeration + */ + virtual void drawNumeration( QPainter* p ); + + public slots: + /** + * This method sets the color for the buttons corresponding to + * the given temperature @p temp + * @param temp is the temperature to which all buttons will be set + */ + void setTemperature( int temp ){ + m_temperature = (double)temp; + update(); + } + + void setDate( int date ){ + //These elements have always been known: + //6 16 26 29 33 47 50 51 79 80 82 83 + m_date = date; + update(); + } + + /** + * this slot removes the selection of any point + */ + void unSelect(); + + private slots: + /** + * If called this slot will emit the signal MouseOver( num ) + * where num is the number of the element the mouse if over. + * If the mouse is not over an element nothing will be emited + * @see MouseOver() + */ + void slotMouseover(); + + /** + * start the calculation of the element over which the mouse-cursor + * is over. Finally the signal ToolTip( int ) is emitted + */ + void slotTransientLabel(); + + /** + * this slot updates the currently selected point + */ + void selectPoint( const QPoint& point ); + + /** + * this slot updates the element given in the @p num + * @param num The number of the selected element + */ + void selectElement( int num ); + + /** + * sets the current element to @p number + * and updates the table + */ + void slotToolTip( int number ); + + signals: + /** + * this signal is emitted when the table is clicked + */ + void tableClicked(QPoint); + + /** + * this signal is emitted when an element is clicked + */ + void ElementClicked(int); + + /** + * this signal is emitted when the tooltip of an element + * has to be displayed + */ + void ToolTip(int); + + /** + * This signal is emited when the mouse pointer is + * over an element + */ + void MouseOver( int ); +}; + + +#endif diff --git a/kalzium/src/plotsetupwidget.ui b/kalzium/src/plotsetupwidget.ui new file mode 100644 index 00000000..a395541d --- /dev/null +++ b/kalzium/src/plotsetupwidget.ui @@ -0,0 +1,256 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>PlotSetupWidget</class> +<widget class="QWidget"> + <property name="name"> + <cstring>PlotSetupWidget</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>279</width> + <height>565</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel" row="9" column="0"> + <property name="name"> + <cstring>textLabel3</cstring> + </property> + <property name="text"> + <string>First element:</string> + </property> + </widget> + <widget class="QLayoutWidget" row="2" column="0"> + <property name="name"> + <cstring>layout4</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1_2</cstring> + </property> + <property name="text"> + <string>Average value:</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>aValue</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="KIntNumInput" row="12" column="0"> + <property name="name"> + <cstring>to</cstring> + </property> + <property name="value"> + <number>115</number> + </property> + <property name="minValue"> + <number>2</number> + </property> + <property name="maxValue"> + <number>200</number> + </property> + <property name="whatsThis" stdset="0"> + <string>Define the last element whose value should be plotted</string> + </property> + </widget> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel3_2</cstring> + </property> + <property name="text"> + <string>Minimum value:</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>minValue</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QCheckBox" row="8" column="0"> + <property name="name"> + <cstring>showNames</cstring> + </property> + <property name="text"> + <string>&Show element names</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Define whether the names of the plotted element should be displayed</string> + </property> + </widget> + <widget class="QLabel" row="11" column="0"> + <property name="name"> + <cstring>textLabel4</cstring> + </property> + <property name="text"> + <string>Last element:</string> + </property> + </widget> + <widget class="QLayoutWidget" row="1" column="0"> + <property name="name"> + <cstring>layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel2</cstring> + </property> + <property name="text"> + <string>Maximum value:</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>maxValue</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QCheckBox" row="7" column="0"> + <property name="name"> + <cstring>connectPoints</cstring> + </property> + <property name="text"> + <string>&Connect points</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Define whether the plotted points should be connected or not</string> + </property> + </widget> + <widget class="KIntNumInput" row="10" column="0"> + <property name="name"> + <cstring>from</cstring> + </property> + <property name="value"> + <number>1</number> + </property> + <property name="minValue"> + <number>1</number> + </property> + <property name="maxValue"> + <number>200</number> + </property> + <property name="whatsThis" stdset="0"> + <string>Define the first element whose value should be plotted</string> + </property> + </widget> + <spacer row="3" column="0"> + <property name="name"> + <cstring>spacer1</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>60</height> + </size> + </property> + </spacer> + <widget class="QGroupBox" row="4" column="0"> + <property name="name"> + <cstring>groupBox1</cstring> + </property> + <property name="title"> + <string>Y-axis</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KComboBox" row="0" column="0"> + <item> + <property name="text"> + <string>Mass</string> + </property> + </item> + <item> + <property name="text"> + <string>Mean Mass</string> + </property> + </item> + <item> + <property name="text"> + <string>Density</string> + </property> + </item> + <item> + <property name="text"> + <string>Electronegativity</string> + </property> + </item> + <item> + <property name="text"> + <string>Melting Point</string> + </property> + </item> + <item> + <property name="text"> + <string>Boiling Point</string> + </property> + </item> + <item> + <property name="text"> + <string>Atomic Radius</string> + </property> + </item> + <item> + <property name="text"> + <string>Covalent Radius</string> + </property> + </item> + <property name="name"> + <cstring>KCB_y</cstring> + </property> + <property name="whatsThis" stdset="0"> + <string>Here you can define what you want to plot</string> + </property> + </widget> + </grid> + </widget> + </grid> +</widget> +<customwidgets> +</customwidgets> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>knuminput.h</includehint> + <includehint>kcombobox.h</includehint> +</includehints> +</UI> diff --git a/kalzium/src/plotwidget.cpp b/kalzium/src/plotwidget.cpp new file mode 100644 index 00000000..3a6f8530 --- /dev/null +++ b/kalzium/src/plotwidget.cpp @@ -0,0 +1,69 @@ +/*************************************************************************** + copyright : (C) 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "plotwidget.h" +#include "plotwidget.moc" + +//KDE-Includes +#include <kdebug.h> + +//QT-Includes +#include <qpainter.h> + +PlotWidget::PlotWidget( double x1, + double x2, + double y1, + double y2, + QWidget *parent, + const char* name) + : KPlotWidget( x1, x2, y1, y2, parent, name ) +{ + m_connectPoints = false; +} + +void PlotWidget::drawObjects( QPainter *p ) +{ + // let the KPlotWidget draw the default stuff first + KPlotWidget::drawObjects(p); + // then draw the connecting lines + if (!m_connectPoints) return; // bail out if connect points is not enabled + + QPoint old; // used to remember last coordinates + bool first = true; + for ( KPlotObject *po = ObjectList.first(); po; po = ObjectList.next() ) + { + // skip empty plot objects + if ( po->points()->count() == 0 ) continue; + // skip non-point plot objects + if (po->type() != KPlotObject::POINTS) continue; + + // draw the connecting lines + p->setPen( QColor( po->color() ) ); + p->setBrush( QColor( po->color() ) ); + for ( DPoint *dp = po->points()->first(); dp; dp = po->points()->next() ) + { + QPoint q = dp->qpoint( PixRect, DataRect ); + + if ( first ) + first = false; + else + p->drawLine(old.x(), old.y(), q.x(), q.y()); + + old.setX( q.x() ); + old.setY( q.y() ); + } + p->setBrush( Qt::NoBrush ); + } +} + diff --git a/kalzium/src/plotwidget.h b/kalzium/src/plotwidget.h new file mode 100644 index 00000000..5a0ccd61 --- /dev/null +++ b/kalzium/src/plotwidget.h @@ -0,0 +1,55 @@ +#ifndef PLOTWIDGET_H +#define PLOTWIDGET_H +/*************************************************************************** + copyright : (C) 2004, 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include <kplotwidget.h> + +/** + * @short This class add the abilitiy to connect the plotted + * data using a line. + * @author Carsten Niehaus + */ +class PlotWidget : public KPlotWidget +{ + Q_OBJECT + + public: + PlotWidget( double x1 = 0.0, double x2 = 0.0, double y1 = 0.0, double y2 = 0.0, QWidget *parent=0 , const char *name =0 ); + + /** + * toggles if the points will be connected with + * a line or not + * @param b if true the points will be connected + */ + void setConnection( bool b ){ + m_connectPoints = b; + } + + private: + /** + * if true, the points will be connected + */ + bool m_connectPoints; + + protected: + /** + * draws the objects + */ + virtual void drawObjects( QPainter *p); + +}; + +#endif // PLOTWIDGET_H + diff --git a/kalzium/src/prefs.kcfgc b/kalzium/src/prefs.kcfgc new file mode 100644 index 00000000..e6df4e2e --- /dev/null +++ b/kalzium/src/prefs.kcfgc @@ -0,0 +1,6 @@ +# Code generation options for kconfig_compiler +File=kalzium.kcfg +#IncludeFiles=defines.h +ClassName=Prefs +Singleton=true +Mutators=true diff --git a/kalzium/src/settings_colors.ui b/kalzium/src/settings_colors.ui new file mode 100644 index 00000000..f32360d0 --- /dev/null +++ b/kalzium/src/settings_colors.ui @@ -0,0 +1,936 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>setColors</class> +<widget class="QWidget"> + <property name="name"> + <cstring>setColors</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>560</width> + <height>359</height> + </rect> + </property> + <property name="caption"> + <string>Set Colors</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QTabWidget" row="0" column="0"> + <property name="name"> + <cstring>dfgdfg</cstring> + </property> + <widget class="QWidget"> + <property name="name"> + <cstring>tab</cstring> + </property> + <attribute name="title"> + <string>&Blocks</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout32</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout28</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel13</cstring> + </property> + <property name="text"> + <string>s-Block:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_block_s</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout29</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel14</cstring> + </property> + <property name="text"> + <string>p-Block:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_block_p</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout30</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel15</cstring> + </property> + <property name="text"> + <string>d-Block:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_block_d</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout31</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel16</cstring> + </property> + <property name="text"> + <string>f-Block:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_block_f</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + </vbox> + </widget> + </grid> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>tab</cstring> + </property> + <attribute name="title"> + <string>Ac&id Behavior</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout26</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout23</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel9</cstring> + </property> + <property name="text"> + <string>Acidic:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_beh_acidic</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout24</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel10</cstring> + </property> + <property name="text"> + <string>Amphoteric:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_beh_amphoteric</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout25</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel11</cstring> + </property> + <property name="text"> + <string>Neutral:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_beh_neutral</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout26</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel12</cstring> + </property> + <property name="text"> + <string>Basic:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_beh_basic</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + </vbox> + </widget> + </grid> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>TabPage</cstring> + </property> + <attribute name="title"> + <string>&Groups</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout22</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout12</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel2_2_2</cstring> + </property> + <property name="text"> + <string>Group 1:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_group_1</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout19</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel8</cstring> + </property> + <property name="text"> + <string>Group 2:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_group_2</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout18</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel7</cstring> + </property> + <property name="text"> + <string>Group 3:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_group_3</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout17</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel6</cstring> + </property> + <property name="text"> + <string>Group 4:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_group_4</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout16</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel5_2</cstring> + </property> + <property name="text"> + <string>Group 5:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_group_5</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout15</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel4_2</cstring> + </property> + <property name="text"> + <string>Group 6:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_group_6</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout14</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel3_2</cstring> + </property> + <property name="text"> + <string>Group 7:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_group_7</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout13</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel2_2</cstring> + </property> + <property name="text"> + <string>Group 8:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_group_8</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + </vbox> + </widget> + </grid> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>TabPage</cstring> + </property> + <attribute name="title"> + <string>&State of Matter</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout14</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout13</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel1</cstring> + </property> + <property name="text"> + <string>Solid:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>kcfg_color_solid</cstring> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_color_solid</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout6</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel2</cstring> + </property> + <property name="text"> + <string>Liquid:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_color_liquid</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout7</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel3</cstring> + </property> + <property name="text"> + <string>Vaporous:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_color_vapor</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + </vbox> + </widget> + </grid> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>TabPage</cstring> + </property> + <attribute name="title"> + <string>Family</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget" row="0" column="0"> + <property name="name"> + <cstring>layout36</cstring> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout12_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel2_2_2_2</cstring> + </property> + <property name="text"> + <string>Alkali metals:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_alkalie</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout19_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel8_2</cstring> + </property> + <property name="text"> + <string>Rare earth:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_rare</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout18_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel7_2</cstring> + </property> + <property name="text"> + <string>Non-metals:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_nonmetal</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout17_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel6_2</cstring> + </property> + <property name="text"> + <string>Alkaline earth metals:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_alkaline</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout16_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel5_2_2</cstring> + </property> + <property name="text"> + <string>Other metals:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_other_metal</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout15_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel4_2_2</cstring> + </property> + <property name="text"> + <string>Halogens:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_halogene</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout14_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel3_2_2</cstring> + </property> + <property name="text"> + <string>Transition metals:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_transition</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout13_2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel2_2_3</cstring> + </property> + <property name="text"> + <string>Noble gases:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_noble_gas</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout35</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel2_2_3_2</cstring> + </property> + <property name="text"> + <string>Metalloids:</string> + </property> + </widget> + <widget class="KColorButton"> + <property name="name"> + <cstring>kcfg_metalloid</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + </vbox> + </widget> + </grid> + </widget> + <widget class="QWidget"> + <property name="name"> + <cstring>TabPage</cstring> + </property> + <attribute name="title"> + <string>&No Color Scheme</string> + </attribute> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="KColorButton" row="0" column="0"> + <property name="name"> + <cstring>kcfg_noscheme</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="toolTip" stdset="0"> + <string>This color will be used if no other scheme is selected</string> + </property> + <property name="whatsThis" stdset="0"> + <string>This color will be used if no other scheme is selected</string> + </property> + </widget> + </grid> + </widget> + </widget> + </grid> +</widget> +<customwidgets> +</customwidgets> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> + <includehint>kcolorbutton.h</includehint> +</includehints> +</UI> diff --git a/kalzium/src/settings_misc.ui b/kalzium/src/settings_misc.ui new file mode 100644 index 00000000..a66693dd --- /dev/null +++ b/kalzium/src/settings_misc.ui @@ -0,0 +1,71 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>setupMisc</class> +<widget class="QWidget"> + <property name="name"> + <cstring>setupMisc</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>422</width> + <height>220</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QButtonGroup" row="0" column="0"> + <property name="name"> + <cstring>kcfg_pselook</cstring> + </property> + <property name="title"> + <string>PSE-Look</string> + </property> + <property name="exclusive"> + <bool>true</bool> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QRadioButton" row="0" column="0"> + <property name="name"> + <cstring>radioButton10</cstring> + </property> + <property name="text"> + <string>Display atomic &mass in the PSE</string> + </property> + </widget> + <widget class="QRadioButton" row="2" column="0"> + <property name="name"> + <cstring>radioButton13</cstring> + </property> + <property name="text"> + <string>Display &only the number of the element</string> + </property> + </widget> + </grid> + </widget> + <spacer row="1" column="0"> + <property name="name"> + <cstring>spacer1</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>30</height> + </size> + </property> + </spacer> + </grid> +</widget> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kalzium/src/settings_units.ui b/kalzium/src/settings_units.ui new file mode 100644 index 00000000..e054021a --- /dev/null +++ b/kalzium/src/settings_units.ui @@ -0,0 +1,167 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>setupUnits</class> +<widget class="QWidget"> + <property name="name"> + <cstring>setupUnits</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>256</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QButtonGroup" row="0" column="0"> + <property name="name"> + <cstring>kcfg_temperature</cstring> + </property> + <property name="title"> + <string>&Temperatures</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Kalzium can show you the temperature in three different scales</string> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QRadioButton" row="0" column="0"> + <property name="name"> + <cstring>radioButton19</cstring> + </property> + <property name="text"> + <string>&Use Kelvin</string> + </property> + <property name="buttonGroupId"> + <number>0</number> + </property> + <property name="toolTip" stdset="0"> + <string>If selected, the temperatures will be displayed in Kelvin</string> + </property> + <property name="whatsThis" stdset="0"> + <string>If selected, the temperatures will be displayed in Kelvin. This is then saved in configuration and restored next time you start Kalzium.</string> + </property> + </widget> + <widget class="QRadioButton" row="2" column="0"> + <property name="name"> + <cstring>radioButton11_2</cstring> + </property> + <property name="text"> + <string>Use degrees &Fahrenheit</string> + </property> + <property name="buttonGroupId"> + <number>2</number> + </property> + <property name="toolTip" stdset="0"> + <string>If selected, the temperatures will be displayed in Degrees Fahrenheit</string> + </property> + <property name="whatsThis" stdset="0"> + <string>If selected, the temperatures will be displayed in Degrees Fahrenheit. This is then saved in configuration and restored next time you start Kalzium.</string> + </property> + </widget> + <widget class="QRadioButton" row="3" column="0"> + <property name="name"> + <cstring>radioButton21</cstring> + </property> + <property name="text"> + <string>Use degrees R&ankine</string> + </property> + <property name="buttonGroupId"> + <number>3</number> + </property> + <property name="toolTip" stdset="0"> + <string>If selected, the temperatures will be displayed in Degrees Rankine</string> + </property> + <property name="whatsThis" stdset="0"> + <string>If selected, the temperatures will be displayed in Degrees Rankine. This is then saved in configuration and restored next time you start Kalzium.</string> + </property> + </widget> + <widget class="QRadioButton" row="4" column="0"> + <property name="name"> + <cstring>radioButton22</cstring> + </property> + <property name="text"> + <string>Use degrees &Réaumur</string> + </property> + <property name="buttonGroupId"> + <number>4</number> + </property> + <property name="toolTip" stdset="0"> + <string>If selected, the temperatures will be displayed in Degrees Réaumur.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>If selected, the temperatures will be displayed in Degrees Réaumur. This is then saved in configuration and restored next time you start Kalzium.</string> + </property> + </widget> + <widget class="QRadioButton" row="1" column="0"> + <property name="name"> + <cstring>radioButton20</cstring> + </property> + <property name="text"> + <string>Use de&grees Celsius</string> + </property> + <property name="buttonGroupId"> + <number>1</number> + </property> + <property name="toolTip" stdset="0"> + <string>If selected, the temperatures will be displayed in Degrees Celsius</string> + </property> + <property name="whatsThis" stdset="0"> + <string>If selected, the temperatures will be displayed in Degrees Celsius. This is then saved in configuration and restored next time you start Kalzium.</string> + </property> + </widget> + </grid> + </widget> + <widget class="QButtonGroup" row="1" column="0"> + <property name="name"> + <cstring>kcfg_energies</cstring> + </property> + <property name="title"> + <string>Units of &Energies</string> + </property> + <property name="exclusive"> + <bool>true</bool> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QRadioButton" row="0" column="0"> + <property name="name"> + <cstring>radioButton3_2_2_2</cstring> + </property> + <property name="text"> + <string>&Show energies in kJ/mol (kilojoule per mol)</string> + </property> + <property name="toolTip" stdset="0"> + <string>Chose the energy unit as kJ/mol (kilojoule per mol)</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Check this if you prefer the energy unit in kJ/mol (kilojoule per mol). The other choice you have is eV (electronvolt).</string> + </property> + </widget> + <widget class="QRadioButton" row="1" column="0"> + <property name="name"> + <cstring>radioButton4_2_2_2</cstring> + </property> + <property name="text"> + <string>Show energies &in eV (electronvolt)</string> + </property> + <property name="toolTip" stdset="0"> + <string>Choose the energy unit as eV (electronvolt)</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Check this if you prefer the energy unit in eV (electronvolt). The other choice you have is kJ/mol (kilojoule per mol).</string> + </property> + </widget> + </grid> + </widget> + </grid> +</widget> +<layoutdefaults spacing="6" margin="11"/> +</UI> diff --git a/kalzium/src/solver/Makefile b/kalzium/src/solver/Makefile new file mode 100644 index 00000000..4b96fdb7 --- /dev/null +++ b/kalzium/src/solver/Makefile @@ -0,0 +1,92 @@ + +OCAMLC = ocamlc -g +OCAMLMLI = ocamlc +OCAMLOPT = ocamlopt +OCAMLDEP = ocamldep +INCLUDES = -I +facile +OPTOPT = +OCAMLLIB := `ocamlc -where` +FACILELIB = $(OCAMLLIB)/facile + + +# link to these libraries +LIBADD_CMX = $(OCAMLLIB)/facile/facile.cmxa #$(OCAMLLIB)/str.cmxa +LIBADD_CMO = $(OCAMLLIB)/facile/facile.cma #$(OCAMLLIB)/str.cma + +# our sources +SOURCES_CHEM = chemset.ml parser.ml lexer.ml datastruct.ml chem.ml calc.ml +SOURCES_WRAP = modwrap.c + +# the targets +CHEM_CMO = $(SOURCES_CHEM:.ml=.cmo) +CHEM_CMX = $(SOURCES_CHEM:.ml=.cmx) +CHEM_O = $(SOURCES_WRAP:.c=.o) + +# default target : the object files for eqchem +all : solver.o + +# shows how to build a program that embeds the solver +# in compiled ocaml, bytecode ocaml and compiled program using compiled caml code +test: atestprog.opt btestprog.out testcprog + +atestprog.opt: $(CHEM_CMX) main.cmx + $(OCAMLOPT) -o $@ $(LIBADD_CMX) $(CHEM_CMX) main.cmx + +btestprog.out: $(CHEM_CMO) main.cmo + $(OCAMLMLI) -o $@ $(LIBADD_CMO) $(CHEM_CMO) main.cmo + +solver.o: $(CHEM_CMX) $(CHEM_O) + $(OCAMLOPT) -output-obj -o solver.o $(LIBADD_CMX) $(CHEM_CMX) + cp -f solver.o modwrap.o ../ + +testcprog: $(CHEM_CMX) $(CHEM_O) + $(OCAMLOPT) -output-obj -o solver.o $(LIBADD_CMX) $(CHEM_CMX) modwrap.o + gcc -c -o main.o main.c -L $(OCAMLLIB) + gcc -o $@ main.o solver.o -L $(OCAMLLIB) \ + -L $(OCAMLLIB)/facile -lasmrun -lstr -lnums -lm -ldl modwrap.o + +.SUFFIXES: +.SUFFIXES: .ml .mli .mly .mll .cmi .cmo .cmx .p.cmx .c + +.ml.cmo : + $(OCAMLC) $(INCLUDES) $(INCLUDES) -c $< + +.mli.cmi : + $(OCAMLMLI) $(INCLUDES) -c $< + +.ml.cmx : + $(OCAMLOPT) $(OPTOPT) $(INCLUDES) -c $< + +.mly.ml : + ocamlyacc $< + +.mll.ml : + ocamllex $< + +%.o : %.c + $(OCAMLOPT) $(OPTOPT) $(INCLUDES) -c $< + +clean: + \rm -f *.cm[iox] *.o *~ .depend *testprog.* testcprog + +cleanall : clean + \rm -f *.cmxa *.a *.cma + +distclean : clean + +interfaces: + ocamlc -i datastruct.ml > datastruct.mli + ocamlc -I +facile -i chem.ml > chem.mli + ocamlc -I +facile -i calc.ml > calc.mli + +maintainer-clean : clean + +uninstall : clean + +install : + echo "done" + +.depend: parser.ml lexer.ml + $(OCAMLDEP) $(INCLUDES) *.mli *.ml > $@ + +include .depend diff --git a/kalzium/src/solver/README b/kalzium/src/solver/README new file mode 100644 index 00000000..c2501bf5 --- /dev/null +++ b/kalzium/src/solver/README @@ -0,0 +1,19 @@ +You will need a working objective caml installation and +the FaCiLe library properly configured and installed +to compile eqchem. + +In practice, one would only run make in this directory (src/solver) +"make" +"make clean", etc + +To assemble with a c++ or a kde program, the object files +solver.o and modwrap.o must be added and linked with : +-L/usr/lib/ocaml -L/usr/lib/ocaml/facile -lasmrun -lstr -lnums -lm -ldl solver.o modwrap.o + +The program built can then be run without the objective caml tools. + +Console examples can also be generated (try "make test") + + +Thomas Nagy + diff --git a/kalzium/src/solver/calc.ml b/kalzium/src/solver/calc.ml new file mode 100644 index 00000000..745f7c14 --- /dev/null +++ b/kalzium/src/solver/calc.ml @@ -0,0 +1,53 @@ +(*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************) + +open Printf;; +open Chemset;; +open Datastruct;; +open Chem;; +open Hashtbl;; + +let create_equation str = + let lexbuf = Lexing.from_string str in + let result = Parser.main Lexer.token lexbuf in + result +;; + +exception Not_found;; + +let solve_equation (str:string) = + let eq = new eqtable in + try + eq#build (create_equation str); + try +(* eq#print_all (); *) + solve eq; + eq#get_eq_sol (); + + with | _ -> begin + let str = (eq#get_eq_orig ())^" : No solution found" in + (*cleanup eq;*) + str + end + with | _ -> str^" : Parse Error"; +;; + +let _ = Callback.register "solve_equation" solve_equation;; + diff --git a/kalzium/src/solver/calc.mli b/kalzium/src/solver/calc.mli new file mode 100644 index 00000000..32bd5518 --- /dev/null +++ b/kalzium/src/solver/calc.mli @@ -0,0 +1,3 @@ +val create_equation : string -> Chemset.listitems +exception Not_found +val solve_equation : string -> string diff --git a/kalzium/src/solver/chem.ml b/kalzium/src/solver/chem.ml new file mode 100644 index 00000000..2e0dd96d --- /dev/null +++ b/kalzium/src/solver/chem.ml @@ -0,0 +1,60 @@ +(*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************) + +open Facile;; +open Easy;; +open Datastruct;; + +let solve (eq : eqtable) = + let nb_molecules = eq#getsize_j () and nb_elements = eq#getsize_i () in + let dist = Fd.array nb_molecules 1 900 in + + (* trivial constraints on domains *) + for j = 0 to nb_molecules -1 do + let num = try int_of_string (eq#getvar j) with _ -> -1 in + if num > -1 then dist.(j) <- Fd.int num + done; + + (* raises an exception if the problem is not solvable *) + for i = 0 to nb_elements - 1 do + Cstr.post (Arith.scalprod_fd (eq#getline i) dist =~ i2e 0) + done; + + let goal = Goals.GlArray.labeling dist in + if (Goals.solve goal) then Array.iteri (fun cnt i -> eq#setsol cnt (Fd.min i)) dist + else failwith "no solution found" +;; + +(* workaround for (probably) a bug in the facile library 1.0 (fixed in 1.1?) : + * when the constraints make a problem + * unsolvable, an exception is raised + * + * unfortunately the next problem + * solved afterwards is not handled properly *) + +let cleanup (eq : eqtable) = +(* Printf.printf "cleaning up"; *) + let nb_molecules = eq#getsize_j () and nb_elements = eq#getsize_i () in + let dist = Fd.array nb_molecules 0 2 in + let goal = Goals.GlArray.labeling dist in + if not (Goals.solve goal) then failwith "fatal error" +;; + + diff --git a/kalzium/src/solver/chem.mli b/kalzium/src/solver/chem.mli new file mode 100644 index 00000000..0e607b2b --- /dev/null +++ b/kalzium/src/solver/chem.mli @@ -0,0 +1,2 @@ +val solve : Datastruct.eqtable -> unit +val cleanup : Datastruct.eqtable -> unit diff --git a/kalzium/src/solver/chemset.ml b/kalzium/src/solver/chemset.ml new file mode 100644 index 00000000..d8136846 --- /dev/null +++ b/kalzium/src/solver/chemset.ml @@ -0,0 +1,82 @@ +(*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************) + +open Printf;; +open Hashtbl;; +open List;; +open String;; + +type chemtbl = (string, int) Hashtbl.t;; +type chemrecord = {mutable hashtbl:chemtbl; mutable formula:string};; +type item = {ikey:string; itbl:chemrecord; mutable sign:int};; +type listitems = (item) list;; + + +(* add a symbol to a molecule *) +let chem_addsym (tbl:chemtbl) (sym:string) (qte:int) = + let prev_qte = ref 0 in + if Hashtbl.mem tbl sym then prev_qte := Hashtbl.find tbl sym; + Hashtbl.replace tbl sym (!prev_qte+qte) +;; + +(* add merge two sub_molecules *) +let chem_add (tbl1:chemrecord) (tbl2:chemrecord) = + Hashtbl.iter (fun sym qte -> chem_addsym tbl1.hashtbl sym qte) tbl2.hashtbl; + tbl1.formula <- tbl1.formula^tbl2.formula; + tbl1 +;; + +(* multiply a sub-molecule (amount of atoms) by an integer value *) +let chem_mult (tbl:chemrecord) (qte:int) = + Hashtbl.iter (fun sym old_qte-> Hashtbl.replace tbl.hashtbl sym (old_qte*qte) ) tbl.hashtbl; + tbl.formula <- "("^tbl.formula^")"^string_of_int(qte); + tbl +;; + +(* creates a small molecule *) +let createchem (sym:string) (qte:int) = + + let prettyformula () = + if String.contains sym '+' || String.contains sym '-' then begin + if qte == 1 then "<b><sup>"^sym^"</sup></b>" + else "<b><sup>"^string_of_int(qte)^sym^"</sup></b>" end + else begin + if qte == 1 then sym + else sym^"<b><sub>"^string_of_int(qte)^"</sub></b>" + end + in + + let table = Hashtbl.create 10 in + Hashtbl.add table sym qte; + { hashtbl=table ; formula=prettyformula() } + (*if (qte!=1) then { hashtbl=table ; formula=prettyformula() } + else { hashtbl=table ; formula=sym }*) +;; + +let chem_negate (l:listitems) = + List.iter (fun i -> i.sign <- -1) l +;; + +(* outputs a molecule *) +let chem_printitem (i:item) = + Printf.printf "item : %s %s %d \n" i.ikey (i.itbl).formula i.sign; + Hashtbl.iter (fun sym qte -> Printf.printf " * %s %d\n" sym qte) i.itbl.hashtbl +;; + diff --git a/kalzium/src/solver/chemset.mli b/kalzium/src/solver/chemset.mli new file mode 100644 index 00000000..64c64bcf --- /dev/null +++ b/kalzium/src/solver/chemset.mli @@ -0,0 +1,10 @@ +type chemtbl = (string, int) Hashtbl.t +and chemrecord = { mutable hashtbl : chemtbl; mutable formula : string; } +and item = { ikey : string; itbl : chemrecord; mutable sign : int; } +and listitems = item list +val chem_addsym : chemtbl -> string -> int -> unit +val chem_add : chemrecord -> chemrecord -> chemrecord +val chem_mult : chemrecord -> int -> chemrecord +val createchem : string -> int -> chemrecord +val chem_negate : listitems -> unit +val chem_printitem : item -> unit diff --git a/kalzium/src/solver/datastruct.ml b/kalzium/src/solver/datastruct.ml new file mode 100644 index 00000000..541ed8cd --- /dev/null +++ b/kalzium/src/solver/datastruct.ml @@ -0,0 +1,141 @@ +(*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************) + +open List;; +open Chemset;; +open Hashtbl;; +open Array;; + +class eqtable = +object (self) + +(* columns : vars + formula | lines : chemical elements *) +val mutable numtbl = Array.make_matrix 0 0 0 +val mutable strtbl = Array.make 0 "" +val mutable vartbl = Array.make 0 "" +val mutable soltbl = Array.make 0 0 +val mutable m_solved = false +val mutable m_middle = 0 + +(* val mutable (table:int array array) = [||] *) + +(* lines : i : chem element *) +(* columns : vars j *) +method getsize_i () = Array.length numtbl +method getsize_j () = if (self#getsize_i () > 0) then Array.length numtbl.(0) else 0 + +method getline j = numtbl.(j) + +method getformula k = strtbl.(k) +method getvar k = vartbl.(k) +method getsol k = soltbl.(k) + +method setsol k v = soltbl.(k) <- v +method isSolved () = m_solved + +method get_eq_sol () = + let str = ref "" in + for j=0 to (self#getsize_j () -1) do + if (j == m_middle) then str := (!str)^" -> " + else if (j>0 && j<self#getsize_j ()) then str := (!str)^" + "; + + str := (!str)^"<b>"^string_of_int(self#getsol j)^"</b> "^(self#getformula j); + done; + !str + +method get_eq_orig () = + let str = ref "" in + for j=0 to (self#getsize_j () -1) do + if (j == m_middle) then str := (!str)^" -> " + else if (j>0 && j<self#getsize_j ()) then str := (!str)^" + "; + + str := (!str)^"<b>"^(self#getvar j)^"</b> "^(self#getformula j); + done; + !str + +method private init i j = numtbl <- Array.make_matrix i j 0; + strtbl <- Array.make j ""; + vartbl <- Array.make j ""; + soltbl <- Array.make j 0 + +method clear () = + self#init 0 0; + +method print_all () = + Printf.printf "--- start print_all ---\n"; + for i = 0 to (self#getsize_i ())-1 do + for j = 0 to (self#getsize_j ())-1 do + Printf.printf "%d " (numtbl.(i).(j)); + done; + Printf.printf "\n"; + done; + Printf.printf "--- end print_all ---\n"; + flush_all () + +(* build the matrix to solve *) +method build (lst:listitems) = + let nb_symbols = ref 0 in + let item_array = Array.of_list lst in + let record:(string, int) Hashtbl.t = Hashtbl.create 10 in + let nb_items = ref (Array.length item_array) in + for i=0 to !nb_items-1 do + Hashtbl.iter (fun sym _ -> + (* take all chemical elements but simplify ions (+ or -) into + *) + let symprocessed = if String.contains sym '+' || String.contains sym '-' + then "+" else sym in + + if not (Hashtbl.mem record symprocessed) then begin + Hashtbl.add record symprocessed !nb_symbols; + nb_symbols := !nb_symbols+1 + end + ) item_array.(i).itbl.hashtbl + done; + + (* initialize the matrix *) + self#init (!nb_symbols) (!nb_items); + + (* process each atom*) + for i=0 to !nb_items-1 do + (* find the middle (->) - nothing to do with the others things in this loop *) + if (item_array.(i).sign<0 && i>0) then (if (item_array.(i-1).sign>0) then m_middle<-i); + + (* store the molecule formula *) + vartbl.(i) <- item_array.(i).ikey; + strtbl.(i) <- item_array.(i).itbl.formula; + + (* for each molecule, process the atoms *) + Hashtbl.iter (fun sym qte -> + + if String.contains sym '+' || String.contains sym '-' then begin + (* it is an electric charge *) + let chargesign = if String.contains sym '-' then -1 else 1 in + let line_idx = (Hashtbl.find record "+") in + numtbl.(line_idx).(i) <- qte * item_array.(i).sign * chargesign + end + else begin + (* check if the atom is already there *) + let line_idx = (Hashtbl.find record sym) in + numtbl.(line_idx).(i) <- (qte * item_array.(i).sign) + end + ) item_array.(i).itbl.hashtbl + done + +end;; + diff --git a/kalzium/src/solver/datastruct.mli b/kalzium/src/solver/datastruct.mli new file mode 100644 index 00000000..f2daeb3b --- /dev/null +++ b/kalzium/src/solver/datastruct.mli @@ -0,0 +1,23 @@ +class eqtable : + object + val mutable m_middle : int + val mutable m_solved : bool + val mutable numtbl : int array array + val mutable soltbl : int array + val mutable strtbl : string array + val mutable vartbl : string array + method build : Chemset.listitems -> unit + method clear : unit -> unit + method get_eq_orig : unit -> string + method get_eq_sol : unit -> string + method getformula : int -> string + method getline : int -> int array + method getsize_i : unit -> int + method getsize_j : unit -> int + method getsol : int -> int + method getvar : int -> string + method private init : int -> int -> unit + method isSolved : unit -> bool + method print_all : unit -> unit + method setsol : int -> int -> unit + end diff --git a/kalzium/src/solver/lexer.ml b/kalzium/src/solver/lexer.ml new file mode 100644 index 00000000..e82d6804 --- /dev/null +++ b/kalzium/src/solver/lexer.ml @@ -0,0 +1,189 @@ +# 22 "lexer.mll" + + open Parser;; + exception IllegalChar + +# 7 "lexer.ml" +let __ocaml_lex_tables = { + Lexing.lex_base = + "\000\000\244\255\255\255\075\000\253\255\036\000\251\255\249\255\ + \248\255\247\255\246\255\000\000\243\255\245\255"; + Lexing.lex_backtrk = + "\255\255\255\255\255\255\001\000\255\255\003\000\255\255\255\255\ + \255\255\255\255\255\255\005\000\255\255\255\255"; + Lexing.lex_default = + "\001\000\000\000\000\000\255\255\000\000\255\255\000\000\000\000\ + \000\000\000\000\000\000\255\255\000\000\000\000"; + Lexing.lex_trans = + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\002\000\002\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \007\000\008\000\000\000\006\000\000\000\011\000\000\000\000\000\ + \003\000\003\000\003\000\003\000\003\000\003\000\003\000\003\000\ + \003\000\003\000\000\000\000\000\000\000\000\000\013\000\000\000\ + \000\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ + \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ + \004\000\004\000\004\000\004\000\004\000\004\000\004\000\004\000\ + \004\000\004\000\004\000\009\000\000\000\010\000\000\000\000\000\ + \000\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\003\000\003\000\003\000\003\000\003\000\ + \003\000\003\000\003\000\003\000\003\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\005\000\005\000\005\000\005\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \012\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000"; + Lexing.lex_check = + "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\000\000\000\000\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \000\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \000\000\000\000\255\255\000\000\255\255\000\000\255\255\255\255\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\255\255\255\255\255\255\255\255\011\000\255\255\ + \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\255\255\000\000\255\255\255\255\ + \255\255\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ + \000\000\000\000\000\000\003\000\003\000\003\000\003\000\003\000\ + \003\000\003\000\003\000\003\000\003\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\005\000\005\000\005\000\005\000\005\000\ + \005\000\005\000\005\000\005\000\005\000\005\000\005\000\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \000\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ + \255\255\255\255\255\255\255\255"; + Lexing.lex_base_code = + ""; + Lexing.lex_backtrk_code = + ""; + Lexing.lex_default_code = + ""; + Lexing.lex_trans_code = + ""; + Lexing.lex_check_code = + ""; + Lexing.lex_code = + ""; +} + +let rec token lexbuf = + __ocaml_lex_token_rec lexbuf 0 +and __ocaml_lex_token_rec lexbuf __ocaml_lex_state = + match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with + | 0 -> +# 28 "lexer.mll" + (token lexbuf) +# 125 "lexer.ml" + + | 1 -> +# 29 "lexer.mll" + ( INT(int_of_string(Lexing.lexeme lexbuf)) ) +# 130 "lexer.ml" + + | 2 -> +# 30 "lexer.mll" + ( CAPITAL(Lexing.lexeme lexbuf) ) +# 135 "lexer.ml" + + | 3 -> +# 31 "lexer.mll" + ( MINOR(Lexing.lexeme lexbuf) ) +# 140 "lexer.ml" + + | 4 -> +# 32 "lexer.mll" + ( PLUS ) +# 145 "lexer.ml" + + | 5 -> +# 33 "lexer.mll" + ( MINUS ) +# 150 "lexer.ml" + + | 6 -> +# 34 "lexer.mll" + ( LPAREN ) +# 155 "lexer.ml" + + | 7 -> +# 35 "lexer.mll" + ( RPAREN ) +# 160 "lexer.ml" + + | 8 -> +# 36 "lexer.mll" + ( LBRACKET ) +# 165 "lexer.ml" + + | 9 -> +# 37 "lexer.mll" + ( RBRACKET ) +# 170 "lexer.ml" + + | 10 -> +# 38 "lexer.mll" + ( ARROW ) +# 175 "lexer.ml" + + | 11 -> +# 39 "lexer.mll" + ( raise IllegalChar; ) +# 180 "lexer.ml" + + | 12 -> +# 40 "lexer.mll" + ( EOF ) +# 185 "lexer.ml" + + | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state + +;; + diff --git a/kalzium/src/solver/lexer.mll b/kalzium/src/solver/lexer.mll new file mode 100644 index 00000000..a6a4ab49 --- /dev/null +++ b/kalzium/src/solver/lexer.mll @@ -0,0 +1,41 @@ +(*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************) + +(* File lexer.mll*) +{ + open Parser;; + exception IllegalChar +} + +rule token = parse +[' ' '\t' '\n'] {token lexbuf} (* ignore whitespaces *) +| ['0'-'9']+ { INT(int_of_string(Lexing.lexeme lexbuf)) } +| ['A'-'Z'] { CAPITAL(Lexing.lexeme lexbuf) } +| ['a'-'z']+ { MINOR(Lexing.lexeme lexbuf) } +| '+' { PLUS } +| '-' { MINUS } +| '(' { LPAREN } +| ')' { RPAREN } +| '[' { LBRACKET } +| ']' { RBRACKET } +| "->" { ARROW } +| _ { raise IllegalChar; } +| eof { EOF } + diff --git a/kalzium/src/solver/main.c b/kalzium/src/solver/main.c new file mode 100644 index 00000000..d8e5e1bc --- /dev/null +++ b/kalzium/src/solver/main.c @@ -0,0 +1,46 @@ +/*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> + +int main(int argc, char ** argv) +{ + caml_startup(argv); + + char * eq = " a CH3(CH2)3COOH + b O2 -> c H2O + d CO2"; + char * eq2= " a CH3(CH2)3COOH + b O2 -> c H2O + d CO"; + char * result = solve_equation(eq); + char * result2 = solve_equation(eq2); + + printf("solution : %s\n", result); + + printf("solution : %s\n", result2); + free(result2); + + result2 = solve_equation(eq); + printf("solution : %s\n", result2); + + free(result); + free(result2); + + return 0; +} + diff --git a/kalzium/src/solver/main.ml b/kalzium/src/solver/main.ml new file mode 100644 index 00000000..f940f1de --- /dev/null +++ b/kalzium/src/solver/main.ml @@ -0,0 +1,46 @@ +(*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************) + +open Printf;; +open Calc;; + + +let myeq1 = " a CH3(CH2)3COOH + b O2 -> c H2O + d CO2";; +let myeq2 = " a CH3COOH + b O2 -> c H2O + d CO2";; +let myeq3 = " a CH3(CH2)3COOH + b O2 -> invalid equation ";; +let myeq4 = "2CH4+aC2H6+cO2->eH2O+5CO2";; +let myeq5 = "a NaNO2 + b NH3 -> b NaN3 + e NaNO3";; +let myeq6 = "a HNO2 + b NH3 -> b HN3 + e HNO3";; +let myeq7 = "a H3O[+] + dCO2 + eO2 -> fH2O + dCO3[2+]";; + +(* Printf.printf "%s \n" (solve_equation myeq1);; +Printf.printf "%s \n" (solve_equation myeq2);; +Printf.printf "%s \n" (solve_equation myeq3);; *) +(* +Printf.printf "%s \n" (solve_equation myeq5);; +Printf.printf "%s \n" (solve_equation myeq6);; +Printf.printf "%s \n" (solve_equation myeq6);; + +Printf.printf "%s \n" (solve_equation myeq6);;*) +Printf.printf "%s \n" (solve_equation myeq7);; + + + + diff --git a/kalzium/src/solver/modwrap.c b/kalzium/src/solver/modwrap.c new file mode 100644 index 00000000..0ab5359e --- /dev/null +++ b/kalzium/src/solver/modwrap.c @@ -0,0 +1,37 @@ +/*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <stdio.h> +#include <string.h> + +#include <caml/mlvalues.h> +#include <caml/callback.h> + +char* solve_equation(const char * eq) +{ + static value * solve_equation_closure = NULL; + if (solve_equation_closure == NULL) + { + solve_equation_closure = caml_named_value("solve_equation"); + } + + return strdup(String_val(callback(*solve_equation_closure, copy_string(eq)) )); +} + diff --git a/kalzium/src/solver/parser.ml b/kalzium/src/solver/parser.ml new file mode 100644 index 00000000..8d7cc3c6 --- /dev/null +++ b/kalzium/src/solver/parser.ml @@ -0,0 +1,317 @@ +type token = + | INT of (int) + | PLUS + | MINUS + | LPAREN + | RPAREN + | LBRACKET + | RBRACKET + | EOF + | CAPITAL of (string) + | MINOR of (string) + | ARROW + +open Parsing;; +# 26 "parser.mly" + open Chemset + + (*let parse_error somestring = Printf.printf "%s \n" somestring;; + *) +# 21 "parser.ml" +let yytransl_const = [| + 258 (* PLUS *); + 259 (* MINUS *); + 260 (* LPAREN *); + 261 (* RPAREN *); + 262 (* LBRACKET *); + 263 (* RBRACKET *); + 0 (* EOF *); + 266 (* ARROW *); + 0|] + +let yytransl_block = [| + 257 (* INT *); + 264 (* CAPITAL *); + 265 (* MINOR *); + 0|] + +let yylhs = "\255\255\ +\001\000\002\000\003\000\003\000\004\000\004\000\005\000\005\000\ +\006\000\006\000\006\000\006\000\006\000\006\000\006\000\007\000\ +\007\000\000\000" + +let yylen = "\002\000\ +\002\000\003\000\001\000\003\000\002\000\002\000\001\000\002\000\ +\002\000\001\000\004\000\004\000\004\000\003\000\003\000\002\000\ +\001\000\002\000" + +let yydefred = "\000\000\ +\000\000\000\000\000\000\000\000\018\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\006\000\000\000\000\000\005\000\001\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\016\000\008\000\ +\009\000\002\000\004\000\000\000\000\000\000\000\014\000\015\000\ +\011\000\012\000\013\000" + +let yydgoto = "\002\000\ +\005\000\006\000\007\000\008\000\012\000\013\000\014\000" + +let yysindex = "\255\255\ +\003\255\000\000\010\255\010\255\000\000\003\000\252\254\011\255\ +\010\255\018\255\008\255\000\000\010\255\021\255\000\000\000\000\ +\003\255\003\255\020\255\007\255\019\255\022\255\000\000\000\000\ +\000\000\000\000\000\000\026\255\023\255\024\255\000\000\000\000\ +\000\000\000\000\000\000" + +let yyrindex = "\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\000\ +\000\000\000\000\001\000\000\000\015\000\008\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000" + +let yygindex = "\000\000\ +\000\000\000\000\006\000\000\000\254\255\000\000\000\000" + +let yytablesize = 281 +let yytable = "\001\000\ +\017\000\015\000\016\000\003\000\003\000\017\000\019\000\010\000\ +\029\000\030\000\024\000\004\000\018\000\009\000\007\000\010\000\ +\023\000\011\000\020\000\021\000\022\000\025\000\026\000\027\000\ +\028\000\031\000\033\000\000\000\032\000\034\000\035\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\ +\000\000\017\000\017\000\000\000\017\000\017\000\017\000\000\000\ +\017\000\010\000\017\000\010\000\010\000\010\000\003\000\010\000\ +\007\000\010\000\000\000\007\000\000\000\000\000\000\000\000\000\ +\007\000" + +let yycheck = "\001\000\ +\000\000\004\000\000\000\001\001\000\000\010\001\009\000\000\000\ +\002\001\003\001\013\000\009\001\002\001\004\001\000\000\006\001\ +\009\001\008\001\001\001\002\001\003\001\001\001\017\000\018\000\ +\005\001\007\001\001\001\255\255\007\001\007\001\007\001\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\ +\255\255\001\001\002\001\255\255\004\001\005\001\006\001\255\255\ +\008\001\002\001\010\001\004\001\005\001\006\001\010\001\008\001\ +\002\001\010\001\255\255\005\001\255\255\255\255\255\255\255\255\ +\010\001" + +let yynames_const = "\ + PLUS\000\ + MINUS\000\ + LPAREN\000\ + RPAREN\000\ + LBRACKET\000\ + RBRACKET\000\ + EOF\000\ + ARROW\000\ + " + +let yynames_block = "\ + INT\000\ + CAPITAL\000\ + MINOR\000\ + " + +let yyact = [| + (fun _ -> failwith "parser") +; (fun parser_env -> + let _1 = (peek_val parser_env 1 : 'equation) in + Obj.repr( +# 44 "parser.mly" + ( _1 ) +# 177 "parser.ml" + : Chemset.listitems)) +; (fun parser_env -> + let _1 = (peek_val parser_env 2 : 'expr) in + let _3 = (peek_val parser_env 0 : 'expr) in + Obj.repr( +# 49 "parser.mly" + ( chem_negate _3; List.append _1 _3 ) +# 185 "parser.ml" + : 'equation)) +; (fun parser_env -> + let _1 = (peek_val parser_env 0 : 'item) in + Obj.repr( +# 53 "parser.mly" + ( _1::[] ) +# 192 "parser.ml" + : 'expr)) +; (fun parser_env -> + let _1 = (peek_val parser_env 2 : 'item) in + let _3 = (peek_val parser_env 0 : 'expr) in + Obj.repr( +# 54 "parser.mly" + ( _1::_3 ) +# 200 "parser.ml" + : 'expr)) +; (fun parser_env -> + let _1 = (peek_val parser_env 1 : string) in + let _2 = (peek_val parser_env 0 : 'symbols) in + Obj.repr( +# 58 "parser.mly" + ( {ikey=_1; itbl=_2; sign=1} ) +# 208 "parser.ml" + : 'item)) +; (fun parser_env -> + let _1 = (peek_val parser_env 1 : int) in + let _2 = (peek_val parser_env 0 : 'symbols) in + Obj.repr( +# 59 "parser.mly" + ( {ikey=string_of_int(_1); itbl=_2; sign=1} ) +# 216 "parser.ml" + : 'item)) +; (fun parser_env -> + let _1 = (peek_val parser_env 0 : 'qte) in + Obj.repr( +# 63 "parser.mly" + ( _1 ) +# 223 "parser.ml" + : 'symbols)) +; (fun parser_env -> + let _1 = (peek_val parser_env 1 : 'qte) in + let _2 = (peek_val parser_env 0 : 'symbols) in + Obj.repr( +# 64 "parser.mly" + ( chem_add _1 _2 ) +# 231 "parser.ml" + : 'symbols)) +; (fun parser_env -> + let _1 = (peek_val parser_env 1 : 'element) in + let _2 = (peek_val parser_env 0 : int) in + Obj.repr( +# 68 "parser.mly" + ( createchem _1 _2 ) +# 239 "parser.ml" + : 'qte)) +; (fun parser_env -> + let _1 = (peek_val parser_env 0 : 'element) in + Obj.repr( +# 69 "parser.mly" + ( createchem _1 1 ) +# 246 "parser.ml" + : 'qte)) +; (fun parser_env -> + let _2 = (peek_val parser_env 2 : 'symbols) in + let _4 = (peek_val parser_env 0 : int) in + Obj.repr( +# 70 "parser.mly" + ( chem_mult _2 _4 ) +# 254 "parser.ml" + : 'qte)) +; (fun parser_env -> + let _2 = (peek_val parser_env 2 : int) in + Obj.repr( +# 71 "parser.mly" + ( createchem "+" _2 ) +# 261 "parser.ml" + : 'qte)) +; (fun parser_env -> + let _2 = (peek_val parser_env 2 : int) in + Obj.repr( +# 72 "parser.mly" + ( createchem "-" _2 ) +# 268 "parser.ml" + : 'qte)) +; (fun parser_env -> + Obj.repr( +# 73 "parser.mly" + ( createchem "+" 1 ) +# 274 "parser.ml" + : 'qte)) +; (fun parser_env -> + Obj.repr( +# 74 "parser.mly" + ( createchem "-" 1 ) +# 280 "parser.ml" + : 'qte)) +; (fun parser_env -> + let _1 = (peek_val parser_env 1 : string) in + let _2 = (peek_val parser_env 0 : string) in + Obj.repr( +# 78 "parser.mly" + ( _1 ^ _2 ) +# 288 "parser.ml" + : 'element)) +; (fun parser_env -> + let _1 = (peek_val parser_env 0 : string) in + Obj.repr( +# 79 "parser.mly" + ( _1 ) +# 295 "parser.ml" + : 'element)) +(* Entry main *) +; (fun parser_env -> raise (YYexit (peek_val parser_env 0))) +|] +let yytables = + { actions=yyact; + transl_const=yytransl_const; + transl_block=yytransl_block; + lhs=yylhs; + len=yylen; + defred=yydefred; + dgoto=yydgoto; + sindex=yysindex; + rindex=yyrindex; + gindex=yygindex; + tablesize=yytablesize; + table=yytable; + check=yycheck; + error_function=parse_error; + names_const=yynames_const; + names_block=yynames_block } +let main (lexfun : Lexing.lexbuf -> token) (lexbuf : Lexing.lexbuf) = + (yyparse yytables 1 lexfun lexbuf : Chemset.listitems) diff --git a/kalzium/src/solver/parser.mli b/kalzium/src/solver/parser.mli new file mode 100644 index 00000000..63d8dece --- /dev/null +++ b/kalzium/src/solver/parser.mli @@ -0,0 +1,15 @@ +type token = + | INT of (int) + | PLUS + | MINUS + | LPAREN + | RPAREN + | LBRACKET + | RBRACKET + | EOF + | CAPITAL of (string) + | MINOR of (string) + | ARROW + +val main : + (Lexing.lexbuf -> token) -> Lexing.lexbuf -> Chemset.listitems diff --git a/kalzium/src/solver/parser.mly b/kalzium/src/solver/parser.mly new file mode 100644 index 00000000..5aa83cc1 --- /dev/null +++ b/kalzium/src/solver/parser.mly @@ -0,0 +1,83 @@ +/*************************************************************************** + * Copyright (C) 2004 by Thomas Nagy * + * tnagy2^8@yahoo.fr * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +/* File parser.mly */ + + + +%{ + open Chemset + + (*let parse_error somestring = Printf.printf "%s \n" somestring;; + *) +%} + +%token <int> INT +%token PLUS MINUS +%token LPAREN RPAREN LBRACKET RBRACKET +%token EOF +%token <string> CAPITAL +%token <string> MINOR +%token ARROW +%start main +%type <Chemset.listitems> main +%% + +main: + equation EOF { $1 } +; + + +equation: + expr ARROW expr { chem_negate $3; List.append $1 $3 } +; + +expr: + item { $1::[] } + | item PLUS expr { $1::$3 } +; + +item: + MINOR symbols { {ikey=$1; itbl=$2; sign=1} } + | INT symbols { {ikey=string_of_int($1); itbl=$2; sign=1} } +; + +symbols: + qte { $1 } + | qte symbols { chem_add $1 $2 } +; + +qte: + element INT { createchem $1 $2 } + | element { createchem $1 1 } + | LPAREN symbols RPAREN INT { chem_mult $2 $4 } + | LBRACKET INT PLUS RBRACKET { createchem "+" $2 } + | LBRACKET INT MINUS RBRACKET { createchem "-" $2 } + | LBRACKET PLUS RBRACKET { createchem "+" 1 } + | LBRACKET MINUS RBRACKET { createchem "-" 1 } +; + +element: + CAPITAL MINOR { $1 ^ $2 } + | CAPITAL { $1 } +; + + + diff --git a/kalzium/src/somwidget.ui b/kalzium/src/somwidget.ui new file mode 100644 index 00000000..83e19209 --- /dev/null +++ b/kalzium/src/somwidget.ui @@ -0,0 +1,185 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>SOMWidget</class> +<widget class="QWidget"> + <property name="name"> + <cstring>SOMWidget</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>200</width> + <height>400</height> + </rect> + </property> + <grid> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <spacer row="0" column="0"> + <property name="name"> + <cstring>spacer3</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Fixed</enum> + </property> + <property name="sizeHint"> + <size> + <width>21</width> + <height>10</height> + </size> + </property> + </spacer> + <widget class="QTextEdit" row="4" column="0"> + <property name="name"> + <cstring>text</cstring> + </property> + <property name="font"> + <font> + <bold>1</bold> + </font> + </property> + <property name="text"> + <string>Move the slider +to find out about +the state of matter</string> + </property> + </widget> + <spacer row="3" column="0"> + <property name="name"> + <cstring>spacer3</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Fixed</enum> + </property> + <property name="sizeHint"> + <size> + <width>21</width> + <height>10</height> + </size> + </property> + </spacer> + <widget class="QLayoutWidget" row="1" column="0"> + <property name="name"> + <cstring>layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>lbl1</cstring> + </property> + <property name="text"> + <string>Temperature:</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer1</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>21</height> + </size> + </property> + </spacer> + </hbox> + </widget> + <widget class="QLayoutWidget" row="2" column="0"> + <property name="name"> + <cstring>layout4</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QSlider"> + <property name="name"> + <cstring>temp_slider</cstring> + </property> + <property name="minValue"> + <number>0</number> + </property> + <property name="maxValue"> + <number>5000</number> + </property> + <property name="value"> + <number>295</number> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="tickmarks"> + <enum>Below</enum> + </property> + <property name="tickInterval"> + <number>500</number> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer4</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Fixed</enum> + </property> + <property name="sizeHint"> + <size> + <width>5</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="KDoubleSpinBox"> + <property name="name"> + <cstring>Number1</cstring> + </property> + <property name="maxValue"> + <number>5000</number> + </property> + <property name="minValue"> + <number>0</number> + </property> + <property name="value"> + <number>295</number> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>lblUnit</cstring> + </property> + <property name="text"> + <string></string> + </property> + </widget> + </hbox> + </widget> + </grid> +</widget> +<customwidgets> +</customwidgets> +<connections> +</connections> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>knuminput.h</includehint> +</includehints> +</UI> diff --git a/kalzium/src/somwidget_impl.cpp b/kalzium/src/somwidget_impl.cpp new file mode 100644 index 00000000..ae1c19d8 --- /dev/null +++ b/kalzium/src/somwidget_impl.cpp @@ -0,0 +1,172 @@ +/*************************************************************************** + copyright : (C) 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "somwidget_impl.h" + +#include <qlabel.h> +#include <qpair.h> +#include <qslider.h> +#include <qtextedit.h> +#include <qvaluelist.h> + +#include <kdebug.h> +#include <knuminput.h> +#include <klocale.h> + +#include <math.h> + +#include "element.h" +#include "kalziumdataobject.h" +#include "prefs.h" +#include "tempunit.h" + +SOMWidgetIMPL::SOMWidgetIMPL( QWidget *parent, const char* name ) + : SOMWidget( parent,name ) +{ + m_list = KalziumDataObject::instance()->ElementList; + + text->setAlignment( text->alignment() | Qt::WordBreak ); + text->setTextFormat( Qt::RichText ); + text->setReadOnly( true ); + text->setPaletteBackgroundColor( paletteBackgroundColor() ); + text->setFrameStyle( QFrame::NoFrame ); + + m_htmlBegin = "<qt>"; + m_htmlEnd = "</qt>"; + m_prevUnit = Prefs::temperature(); + + connect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( spinValueChanged( double ) ) ); + connect( temp_slider, SIGNAL( valueChanged( int ) ), + this, SLOT( sliderValueChanged( int ) ) ); + connect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( setNewTemp( double ) ) ); + + reloadUnits(); +} + +void SOMWidgetIMPL::reloadUnits() +{ + lblUnit->setText( TempUnit::unitListSymbol( Prefs::temperature() ) ); + QPair<double, double> range = TempUnit::rangeForUnit( Prefs::temperature() ); + + double newvalue = TempUnit::convert( Number1->value(), m_prevUnit, Prefs::temperature() ); + Number1->setRange( range.first, range.second, 0.1, 1 ); + Number1->setValue( newvalue ); + setNewTemp( newvalue ); +kdDebug() << "min: " << Number1->minValue() << " - max: " << Number1->maxValue() << endl; + m_prevUnit = Prefs::temperature(); +} + +void SOMWidgetIMPL::sliderValueChanged( int temp ) +{ +// TODO check if in Qt4 the RangeControl emits the signal again + disconnect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( spinValueChanged( double ) ) ); + disconnect( temp_slider, SIGNAL( valueChanged( int ) ), + this, SLOT( sliderValueChanged( int ) ) ); + disconnect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( setNewTemp( double ) ) ); + double newvalue = TempUnit::convert( (double)temp, (int)TempUnit::Kelvin, Prefs::temperature() ); + Number1->setValue( newvalue ); + setNewTemp( newvalue ); + connect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( spinValueChanged( double ) ) ); + connect( temp_slider, SIGNAL( valueChanged( int ) ), + this, SLOT( sliderValueChanged( int ) ) ); + connect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( setNewTemp( double ) ) ); +} + +void SOMWidgetIMPL::spinValueChanged( double temp ) +{ + disconnect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( spinValueChanged( double ) ) ); + disconnect( temp_slider, SIGNAL( valueChanged( int ) ), + this, SLOT( sliderValueChanged( int ) ) ); + disconnect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( setNewTemp( double ) ) ); + int newvalue = (int)TempUnit::convert( temp, Prefs::temperature(), (int)TempUnit::Kelvin ); + temp_slider->setValue( newvalue ); + setNewTemp( temp ); + connect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( spinValueChanged( double ) ) ); + connect( temp_slider, SIGNAL( valueChanged( int ) ), + this, SLOT( sliderValueChanged( int ) ) ); + connect( Number1, SIGNAL( valueChanged( double ) ), + this, SLOT( setNewTemp( double ) ) ); +} + +void SOMWidgetIMPL::setNewTemp( double newtemp ) +{ + static const int threshold = 25; + + double temp = TempUnit::convert( newtemp, Prefs::temperature(), (int)TempUnit::Kelvin ); + + QValueList<Element*>::ConstIterator it = m_list.begin(); + const QValueList<Element*>::ConstIterator itEnd = m_list.end(); + + QStringList listMeltingPoint; + QStringList listBoilingPoint; + QStringList listBoilingPointValue; + QStringList listMeltingPointValue; + for ( ; it != itEnd; ++it ) + { + if ( ( ( *it )->melting() > 0.0 ) && fabs( ( *it )->melting() - temp ) <= threshold ) + { + listMeltingPoint << ( *it )->elname(); + listMeltingPointValue << ( *it )->adjustUnits( Element::MELTINGPOINT ); + } + if ( ( ( *it )->boiling() > 0.0 ) && fabs( ( *it )->boiling() - temp ) <= threshold ) + { + listBoilingPoint << ( *it )->elname(); + listBoilingPointValue << ( *it )->adjustUnits( Element::BOILINGPOINT ); + } + } + QString htmlcode; + if ( listMeltingPoint.count() > 0 ) + { + htmlcode += i18n( "Elements with melting point around this temperature:" ) + "<br>"; + for ( uint i = 0; i < listMeltingPoint.count(); i++ ) + { + htmlcode += " <b>·</b> " + i18n( "For example: Carbon (300K)", "%1 (%2)" ).arg( listMeltingPoint[i] ).arg( listMeltingPointValue[i] ) + "<br>"; + } + htmlcode += "<br>"; + } + else + { + htmlcode += i18n( "No elements with a melting point around this temperature" ); + htmlcode += "<br><br>"; + } + if ( listBoilingPoint.count() > 0 ) + { + htmlcode += i18n( "Elements with boiling point around this temperature:" ) + "<br>"; + for ( uint i = 0; i < listBoilingPoint.count(); i++ ) + { + htmlcode += " <b>·</b> " + i18n( "For example: Carbon (300K)", "%1 (%2)" ).arg( listBoilingPoint[i] ).arg( listBoilingPointValue[i] ) + "<br>"; + } + htmlcode += "<br>"; + } + else + { + htmlcode += i18n( "No elements with a boiling point around this temperature" ); + htmlcode += "<br>"; + } + +// kdDebug() << m_htmlBegin + htmlcode + m_htmlEnd << endl; + + text->setText( m_htmlBegin + htmlcode + m_htmlEnd ); + +} + +#include "somwidget_impl.moc" diff --git a/kalzium/src/somwidget_impl.h b/kalzium/src/somwidget_impl.h new file mode 100644 index 00000000..0c61c355 --- /dev/null +++ b/kalzium/src/somwidget_impl.h @@ -0,0 +1,63 @@ +#ifndef SOMWIDGET_IMPL_H +#define SOMWIDGET_IMPL_H +/*************************************************************************** + copyright : (C) 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "somwidget.h" + +class Element; + +/** + * @class SOMWidgetIMPL + * @author Carsten Niehaus + * @author Pino Toscano + * + * The SOMWidgetIMPL provides a QSlider. When this slider is moved, + * this widget will display which elements have a boiling or melting + * point near the temperature the user entered using the slider. + */ +class SOMWidgetIMPL : public SOMWidget +{ + Q_OBJECT + + public: + /** + * @param parent The parent of this widget + * @param name The name of this widget + */ + SOMWidgetIMPL( QWidget *parent = 0, const char* name = 0 ); + + public slots: + /** + * Reload the current unit from the preferences + */ + void reloadUnits(); + + private: + QValueList<Element*> m_list; + QString m_htmlBegin; + QString m_htmlEnd; + int m_prevUnit; + + private slots: + void sliderValueChanged( int temp ); + void spinValueChanged( double temp ); + + /** + * in this slot the elements will be compared with + * the temperature @p newtemp. The content of the HTML + * will be generated + */ + void setNewTemp( double newtemp ); +}; +#endif // SOMWIDGET_IMPL_H diff --git a/kalzium/src/spectrum.cpp b/kalzium/src/spectrum.cpp new file mode 100644 index 00000000..4b74eadb --- /dev/null +++ b/kalzium/src/spectrum.cpp @@ -0,0 +1,151 @@ +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include "spectrum.h" + +#include "element.h" + +#include <klocale.h> + +#include <math.h> + +double Spectrum::minBand() +{ + double value = ( *m_bandlist.begin() ).wavelength; + QValueList<band>::const_iterator it = m_bandlist.begin(); + const QValueList<band>::const_iterator itEnd = m_bandlist.end(); + for (;it!=itEnd;++it) + { + if ( value > ( *it ).wavelength ) + value = ( *it ).wavelength; + } + return value; +} + +double Spectrum::maxBand() +{ + double value = ( *m_bandlist.begin() ).wavelength; + QValueList<band>::const_iterator it = m_bandlist.begin(); + const QValueList<band>::const_iterator itEnd = m_bandlist.end(); + for (;it!=itEnd;++it) + { + if ( value < ( *it ).wavelength ) + value = ( *it ).wavelength; + } + return value; +} + + +Spectrum* Spectrum::adjustToWavelength( double min, double max ) +{ + Spectrum *spec = new Spectrum(); + + QValueList<band>::const_iterator it = m_bandlist.begin(); + const QValueList<band>::const_iterator itEnd = m_bandlist.end(); + + for ( ; it != itEnd; ++it ) + { + if ( ( *it ).wavelength < min || ( *it ).wavelength > max ) + continue; + + spec->addBand( *it ); + } + + spec->adjustMinMax(); + + return spec; +} + +void Spectrum::adjustIntensities() +{ + int maxInt = 0; + QValueList<band>::Iterator it = m_bandlist.begin(); + const QValueList<band>::Iterator itEnd = m_bandlist.end(); + + //find the highest intensity + for ( ; it != itEnd; ++it ) + { + if ( ( *it ).intensity > maxInt ) + maxInt = ( *it ).intensity; + } + + //check if an adjustment is needed or not + if ( maxInt == 1000 ) return; + + double max = ( double ) maxInt; + + //now adjust the intensities. + it = m_bandlist.begin(); + for ( ; it != itEnd; ++it ) + { + double curInt = ( ( double )( *it ).intensity ); + + double newInt = max*1000/curInt; + ( *it ).intensity = qRound( newInt ); + } +} + +QValueList<double> Spectrum::wavelengths( double min, double max ) +{ + QValueList<double> list; + + QValueList<band>::const_iterator it = m_bandlist.begin(); + const QValueList<band>::const_iterator itEnd = m_bandlist.end(); + + for ( ; it != itEnd; ++it ) + { + if ( ( *it ).wavelength < min || ( *it ).wavelength > max ) + continue; + + list.append( ( *it ).wavelength ); + } + + return list; +} + +QString Spectrum::bandsAsHtml() +{ + QString html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"><html><head><title>Chemical data</title>i<body>"; + + html += "<table>"; + + QValueList<band>::const_iterator it = m_bandlist.begin(); + const QValueList<band>::const_iterator itEnd = m_bandlist.end(); + for (;it!=itEnd;++it) + { + html += QString( "<tr>" ) + + "<td>" + i18n( "Wavelength: %1 nm" ).arg( ( *it ).wavelength ) + "</td>" + + "<td>" + i18n( "Intensity: %1" ).arg( ( *it ).intensity ) + "</td>" + + "<td>" + i18n( "Probability: %1 10<sup>8</sup>s<sup>-1</sup>" ).arg( ( *it ).aki ) + "</td>" + + "<td>" + i18n( "Energy 1: %1" ).arg( ( *it ).energy1 ) + "</td>" + + "<td>" + i18n( "Energy 2: %1" ).arg( ( *it ).energy2 ) + "</td>" + + "<td>" + i18n( "Electron Configuration 1: %1" ).arg( ( *it ).electronconfig1 ) + "</td>" + + "<td>" + i18n( "Electron Configuration 2: %1" ).arg( ( *it ).electronconfig2 ) + "</td>" + + "<td>" + i18n( "Term 1: %1" ).arg( ( *it ).term1 ) + "</td>" + + "<td>" + i18n( "Term 2: %1" ).arg( ( *it ).term2 ) + "</td>" + + "<td>" + i18n( "J 1: %1" ).arg( ( *it ).J1 ) + "</td>" + + "<td>" + i18n( "J 2: %1" ).arg( ( *it ).J2 ) + "</td>" + + "</tr>\n"; + } + + html += "</table>"; + + html += "</body></html>"; + return html; +} diff --git a/kalzium/src/spectrum.h b/kalzium/src/spectrum.h new file mode 100644 index 00000000..7578973d --- /dev/null +++ b/kalzium/src/spectrum.h @@ -0,0 +1,174 @@ +#ifndef SPECTRUM_H +#define SPECTRUM_H +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <qstring.h> +#include <qvaluelist.h> + +class QPixmap; +class Element; + +/** + * @author Carsten Niehaus + * + * This class represents an spectrum with all its properties + */ +class Spectrum +{ + public: + /** + * This spectrum doesn't belong to any element + */ + Spectrum(){} + + /** + * public destructor + */ + ~Spectrum(){} + + /** + * a band is one line in the spectrum of an element + */ + struct band + { + ///in nm) + double wavelength; + + ///Transition Probabilities + ///10^8s-1 (1000000000 per second) + double aki; + + ///number of energylevels per centimeter + double energy1; + + ///number of energylevels per centimeter + double energy2; + + ///relative. The highest is per definition 1000 + int intensity; + + QString electronconfig1; + QString electronconfig2; + QString term1; + QString term2; + QString J1; + QString J2; + }; + + /** + * adds the band @p b to the internal + * lists of bands + */ + void addBand( band b ){ + m_bandlist.append( b ); + } + + /** + * @param min the lowest allowed wavalength in nanometer + * @param max the highest allowed wavalength in nanometer + * + * @returns a spectrum with the wavelength in the range + * of @p min to @p max. The intensities are readjusted + * so that the biggest intensity is again 1000 and the + * others are adopted. + */ + Spectrum* adjustToWavelength( double min, double max ); + + /** + * sets the highest intensity to 1000 and adjusts the + * others + */ + void adjustIntensities(); + + /** + * @param min the lowest allowed wavalength in nanometer + * @param max the highest allowed wavalength in nanometer + * + * @return the wavelength in a QValueList<double> + */ + QValueList<double> wavelengths( double min, double max ); + + /** + * @return the smallest wavelength + */ + double min() const{ + return m_min; + } + + /** + * @return the highest wavelength + */ + double max() const{ + return m_max; + } + + /** + * @return the list of bands of the spectrum + */ + QValueList<band>* bandlist(){ + return &m_bandlist; + } + + /** + * cache the values of the biggest and + * smallest wavelenght + */ + void adjustMinMax(){ + m_min = minBand(); + m_max = maxBand(); + } + + /** + * @return the data of a spectrum as HTML code + */ + QString bandsAsHtml(); + + /** + * @return the parent element of this spectrum + */ + Element* parentElement() + { return m_parentElement; } + + private: + /** + * @return the smallest wavelength + */ + double minBand(); + + /** + * @return the biggest wavelength + */ + double maxBand(); + + /** + * the internal dataset + */ + QValueList<band> m_bandlist; + + /** + * the cached values of the highest and lowest wavelength + */ + double m_max, m_min; + + Element* m_parentElement; +}; +#endif // SPECTRUM_H diff --git a/kalzium/src/spectrumview.ui b/kalzium/src/spectrumview.ui new file mode 100644 index 00000000..2787ab66 --- /dev/null +++ b/kalzium/src/spectrumview.ui @@ -0,0 +1,224 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>SpectrumView</class> +<widget class="QWidget"> + <property name="name"> + <cstring>SpectrumView</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>469</width> + <height>316</height> + </rect> + </property> + <property name="toolTip" stdset="0"> + <string>This page gives an overview about the spectrum this element. With the mouse you can zoom into the spectrum.</string> + </property> + <property name="whatsThis" stdset="0"> + <string>This page gives an overview about the spectrum this element</string> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <widget class="SpectrumWidget"> + <property name="name"> + <cstring>m_spectrumWidget</cstring> + </property> + <property name="toolTip" stdset="0"> + <string>This is the spectrum of the element</string> + </property> + <property name="whatsThis" stdset="0"> + <string>This is the spectrum of the element</string> + </property> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout2</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>label1</cstring> + </property> + <property name="text"> + <string>&Minimum value:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>minimumValue</cstring> + </property> + </widget> + <widget class="QSpinBox"> + <property name="name"> + <cstring>minimumValue</cstring> + </property> + <property name="maxValue"> + <number>999</number> + </property> + <property name="minValue"> + <number>1</number> + </property> + <property name="value"> + <number>380</number> + </property> + <property name="toolTip" stdset="0"> + <string>This sets the leftmost wavelength of the spectrum</string> + </property> + <property name="whatsThis" stdset="0"> + <string>This sets the leftmost wavelength of the spectrum</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>label2</cstring> + </property> + <property name="text"> + <string>Maximum &value:</string> + </property> + <property name="buddy" stdset="0"> + <cstring>maximumValue</cstring> + </property> + </widget> + <widget class="QSpinBox"> + <property name="name"> + <cstring>maximumValue</cstring> + </property> + <property name="maxValue"> + <number>1000</number> + </property> + <property name="minValue"> + <number>2</number> + </property> + <property name="value"> + <number>780</number> + </property> + <property name="toolTip" stdset="0"> + <string>This sets the rightmost wavelength of the spectrum</string> + </property> + <property name="whatsThis" stdset="0"> + <string>This sets the rightmost wavelength of the spectrum</string> + </property> + </widget> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout4</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <spacer> + <property name="name"> + <cstring>spacer4</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>211</width> + <height>21</height> + </size> + </property> + </spacer> + <widget class="KPushButton"> + <property name="name"> + <cstring>exportButton</cstring> + </property> + <property name="text"> + <string></string> + </property> + <property name="toolTip" stdset="0"> + <string>Using this button you can export the spectrum as a graphic</string> + </property> + <property name="whatsThis" stdset="0"> + <string>Using this button you can export the spectrum as a graphic</string> + </property> + </widget> + </hbox> + </widget> + <spacer> + <property name="name"> + <cstring>spacer3</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>21</width> + <height>1</height> + </size> + </property> + </spacer> + </vbox> +</widget> +<customwidgets> + <customwidget> + <class>SpectrumWidget</class> + <header location="local">spectrumwidget.h</header> + <sizehint> + <width>400</width> + <height>230</height> + </sizehint> + <container>0</container> + <sizepolicy> + <hordata>5</hordata> + <verdata>5</verdata> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + <pixmap>image0</pixmap> + <slot access="public" specifier="">setRightBorder(int)</slot> + <slot access="public" specifier="">setLeftBorder(int)</slot> + </customwidget> +</customwidgets> +<images> + <image name="image0"> + <data format="PNG" length="1046">89504e470d0a1a0a0000000d4948445200000016000000160806000000c4b46c3b000003dd49444154388dad954168145718c77f13a7f64d59ca1b6a601ea4b20b82ee41ea1e7258a987067a301050410a965c02855e4a2f1e8a4df59443ab5028f494da1e5ae36d3d04d283150f858e07710583533074b698f60d98320f5cba9f65747a98d9a850430bfde0637830fce7ffbef9f1fdbdb22c1997e77913c02ec0072600afee9daaacfb0950008fcbb27ce28d8517cf2cbeda3dd07d7fe0060ba3add1fed4a504048c18613058ec3f9e739793dc4b36e29bf10a0517813f80475e5996789e3771ad77edb4d6f9a768c10efb844a918b256c1872b1988601c9418538b168353e07c4776eb1f64d9fb51fdc79e00b20f7ebebec4aee270bdd294d7ff322ea614a52082684e43eb84c613341a108f640e720a408da874c209a042605e01de012f0682cec3364bf953eaa106ce130939a7e0cb7be17aedfcc503e4821285f13ed53bc3b1fd29e1ed1d4900d85e61e05c85e207cd6f1c4ddec2e1d25240f134ca8595b1556961d14a0b5c2ec53280576200c3684a58f534ecc479c9887a816af2b00768f853dd330e492622615fd187ab5e8a963119d3968b70caeb028427a5746f4961dbd6f07b49b6d3a4703a28600424d95373116b6434ba8143687b5558714c2ecb188990568b584ac48e041c0cae59c53f321a73ed0e02bbe5cb6a821b86dc315a263c79886212f52702d92db7db48e786b0e222d3801551896cee7a4eb8efc012c9e35c4571de9cf42dc1f61f4f3708f1d638716d3502483147c304d68bd0e990848c8d2194bb2ee505a317b2424f773da1d8d1482dd043b7c8170c52918a5a0105a8d6a626a68583a9b93ae4bf5231b8a600a5a1af041f90a29c068f562c7289006e06b7e1a088a80deeaa872da5044539ac120e3c2394b1c87d8549042683503f2a754d4fc3ee3d8494af720349b8a6c20f4ae8c5878af45fe40983d1a1268b8700e061b198b1f5a64e888224dbb03e27698b1560a87307b52218554485d49593c63684d8fe874479cfec410451ab795410187e7349d436077728c58b4af387c04642be2ebe5012b9f437cd5d19dd6b8026c9ae3b6a49a2d42f2a310df08686945cdf173c265ba59d19089d06cc0cc4985d26d7a972dc9ba90dc1e546f17a0f768668e6b6e5d17ecd0a1fc9064735bb404ca6de1e45eb211276a5f64149908918699b911b36fb789fb16d9827c08ed0306d376740e417c2340fb6d5c9192de01e077e031508ed76680cf47dd37d5d9d054488908a80a21557f5ef9358280508dc33948fa82cd04977109f80af8857ad1bf04ec053e037ee5692afcdbfe0df80e380ebc014c6e2f7aaaad1402afd5cf807aa1b07395f5f547404e9520f97634799ee7032f03afd4a2bbf96f99f7572dfe27e3681ad7ff19a67f032fb1f0843cf31fdf0000000049454e44ae426082</data> + </image> +</images> +<connections> + <connection> + <sender>minimumValue</sender> + <signal>valueChanged(int)</signal> + <receiver>m_spectrumWidget</receiver> + <slot>setLeftBorder(int)</slot> + </connection> + <connection> + <sender>maximumValue</sender> + <signal>valueChanged(int)</signal> + <receiver>m_spectrumWidget</receiver> + <slot>setRightBorder(int)</slot> + </connection> + <connection> + <sender>exportButton</sender> + <signal>clicked()</signal> + <receiver>SpectrumView</receiver> + <slot>slotExportAsImage()</slot> + </connection> +</connections> +<slots> + <slot access="protected">slotExportAsImage()</slot> +</slots> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>spectrumwidget.h</includehint> + <includehint>kpushbutton.h</includehint> +</includehints> +</UI> diff --git a/kalzium/src/spectrumviewimpl.cpp b/kalzium/src/spectrumviewimpl.cpp new file mode 100644 index 00000000..b7a3b479 --- /dev/null +++ b/kalzium/src/spectrumviewimpl.cpp @@ -0,0 +1,47 @@ +/*************************************************************************** + copyright : (C) 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "spectrumviewimpl.h" + +#include <qspinbox.h> + +#include <kfiledialog.h> +#include <kguiitem.h> +#include <klocale.h> +#include <kmessagebox.h> +#include <kpushbutton.h> + +#include "exporter.h" + +SpectrumViewImpl::SpectrumViewImpl( QWidget *parent, const char* name ) + : SpectrumView( parent, name ) +{ + resize( minimumSizeHint() ); + // simulating an update + m_spectrumWidget->setRightBorder( maximumValue->value() ); + exportButton->setGuiItem( KGuiItem( i18n( "&Export Spectrum as Image" ), "fileexport" ) ); +} + +void SpectrumViewImpl::slotExportAsImage() +{ + Exporter* exporter = new Exporter(); + QString fileName = KFileDialog::getSaveFileName( + QString::null, exporter->supportedImageFormats(), + this, i18n( "Save Spectrum" ) ); + if( !fileName.isEmpty() ) + { + if ( !exporter->saveAsImage( &m_spectrumWidget->pixmap(), fileName ) ) + KMessageBox::error( this, i18n( "The spectrum could not be saved" ), i18n( "Image Could Not Be Saved") ); + } + delete exporter; +} +#include "spectrumviewimpl.moc" diff --git a/kalzium/src/spectrumviewimpl.h b/kalzium/src/spectrumviewimpl.h new file mode 100644 index 00000000..131a602c --- /dev/null +++ b/kalzium/src/spectrumviewimpl.h @@ -0,0 +1,49 @@ +/*************************************************************************** + copyright : (C) 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef SPECTRUMVIEWIMPL_H +#define SPECTRUMVIEWIMPL_H + +#include "spectrumview.h" +#include "spectrum.h" +#include "spectrumwidget.h" + +/** + * @author Carsten Niehaus + */ +class SpectrumViewImpl : public SpectrumView +{ + Q_OBJECT + + public: + /** + * @param parent the parent widget + * @param name the name used internally + */ + SpectrumViewImpl( QWidget* parent, const char* name ); + + /** + * sets the spectrum to @p spec + * @param spec the spectrum to display + */ + void setSpectrum( Spectrum* spec ){ + m_spectrumWidget->setSpectrum( spec ); + } + + private slots: + /** + * export the spectrum as an image + */ + void slotExportAsImage(); +}; + +#endif // SPECTRUMVIEWIMPL_H diff --git a/kalzium/src/spectrumwidget.cpp b/kalzium/src/spectrumwidget.cpp new file mode 100644 index 00000000..5531163c --- /dev/null +++ b/kalzium/src/spectrumwidget.cpp @@ -0,0 +1,430 @@ +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#include "spectrumwidget.h" +#include "spectrum.h" +#include "element.h" +#include "kalziumutils.h" + +#include <kdebug.h> +#include <kglobal.h> +#include <klocale.h> +#include <math.h> + +#include <qcursor.h> +#include <qsizepolicy.h> +#include <qpainter.h> +#include <qpixmap.h> +#include <qtooltip.h> + +#include <qglobal.h> +#if defined(Q_OS_SOLARIS) +#include <ieeefp.h> +#endif + +SpectrumWidget::SpectrumWidget( QWidget *parent, const char* name ) : QWidget( parent, name ) +{ + startValue = 0; + endValue = 0; + + m_LMBPointCurrent.setX( -1 ); + m_LMBPointPress.setX( -1 ); + + m_showtooltip = false; + + m_realHeight = 200; + + Gamma = 0.8; + IntensityMax = 255; + + setType( EmissionSpectrum ); + + setMinimumSize( 400, 230 ); + setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ); + setBackgroundMode( NoBackground ); +} + +void SpectrumWidget::paintEvent( QPaintEvent * /*e*/ ) +{ + if ( !m_spectrum ) + return; + + m_pixmap.resize( width(), height() ); + m_pixmap.fill( this, width(), height() ); + + QPainter p; + p.begin( &m_pixmap, this ); + p.fillRect( 0, 0, width(), m_realHeight, Qt::black ); + + paintBands( &p ); + + drawTickmarks( &p ); + + if ( m_showtooltip ) + drawTooltip( &p ); + + if ( m_LMBPointPress.x() != -1 && m_LMBPointCurrent.x() != -1 ) + drawZoomLine( &p ); + + p.end(); + bitBlt( this, 0, 0, &m_pixmap ); +} + +void SpectrumWidget::drawZoomLine( QPainter* p ) +{ + p->setPen( Qt::white ); + p->drawLine( m_LMBPointPress.x(), m_LMBPointPress.y(), m_LMBPointCurrent.x(), m_LMBPointPress.y() ); + p->drawLine( m_LMBPointCurrent.x(), m_LMBPointPress.y()+10, m_LMBPointCurrent.x(), m_LMBPointPress.y()-10 ); + p->drawLine( m_LMBPointPress.x(), m_LMBPointPress.y()+10, m_LMBPointPress.x(), m_LMBPointPress.y()-10 ); + +} + +void SpectrumWidget::paintBands( QPainter* p ) +{ + if ( m_type == AbsorptionSpectrum ) + { + for ( double va = startValue; va <= endValue ; va += 0.1 ) + { + int x = xPos( va ); + p->setPen( linecolor( va ) ); + p->drawLine( x,0,x, m_realHeight ); + } + + p->setPen( Qt::black ); + } + + int i = 0; + int x = 0; + int temp = 0; + + for ( QValueList<Spectrum::band>::Iterator it = m_spectrum->bandlist()->begin(); + it != m_spectrum->bandlist()->end(); + ++it ) + { + if ( ( *it ).wavelength < startValue || ( *it ).wavelength > endValue ) + continue; + + x = xPos( ( *it ).wavelength ); + + temp = 0; + + switch ( m_type ) + { + case EmissionSpectrum: + p->setPen( linecolor( ( *it ).wavelength ) ); + p->drawLine( x,0,x, m_realHeight-1 ); + + p->setPen( Qt::black ); +// p->drawLine( x,m_realHeight,x, m_realHeight ); + break; + + case AbsorptionSpectrum: + p->setPen( Qt::black ); + p->drawLine( x,0,x, m_realHeight-1 ); + break; + } + + i++; + } +} + +QColor SpectrumWidget::linecolor( double spectrum ) +{ + int r,g,b; + wavelengthToRGB( spectrum, r,g,b ); + + QColor c( r,g,b ); + return c; +} + + +void SpectrumWidget::wavelengthToRGB( double wavelength, int& r, int& g, int& b ) +{ + double blue = 0.0, green = 0.0, red = 0.0, factor = 0.0; + + int wavelength_ = ( int ) floor( wavelength ); + if ( wavelength_ < 380 || wavelength_ > 780 ) + { + //make everything white + r = g = b = 255; + return; + } + else if ( wavelength_ > 380 && wavelength_ < 439 ) + { + red = -( wavelength-440 ) / ( 440-380 ); + green = 0.0; + blue = 1.0; + + } + else if ( wavelength_ > 440 && wavelength_ < 489 ) + { + red = 0.0; + green = ( wavelength-440 ) / ( 490-440 ); + blue = 1.0; + } + else if ( wavelength_ > 490 && wavelength_ < 509 ) + { + red = 0.0; + green = 1.0; + blue = -( wavelength-510 ) / ( 510-490 ); + } + else if ( wavelength_ > 510 && wavelength_ < 579 ) + { + red = ( wavelength-510 ) / ( 580-510 ); + green = 1.0; + blue = 0.0; + } + else if ( wavelength_ > 580 && wavelength_ < 644 ) + { + red = 1.0; + green = -( wavelength-645 ) / ( 645-580 ); + blue = 0.0; + } + else if ( wavelength_ > 645 && wavelength_ < 780 ) + { + red = 1.0; + green = 0.0; + blue = 0.0; + } + + if ( wavelength_ > 380 && wavelength_ < 419 ) + factor = 0.3 + 0.7*( wavelength - 380 ) / ( 420 - 380 ); + else if ( wavelength_ > 420 && wavelength_ < 700 ) + factor = 1.0; + else if ( wavelength_ > 701 && wavelength_ < 780 ) + factor = 0.3 + 0.7*( 780 - wavelength ) / ( 780 - 700 ); + else + factor = 0.0; + + r = Adjust( red, factor ); + g = Adjust( green, factor ); + b = Adjust( blue, factor ); +} + +int SpectrumWidget::Adjust( double color, double factor ) +{ + if ( color == 0.0 ) + return 0; + else + return qRound( IntensityMax * pow( color*factor, Gamma ) ); +} + +void SpectrumWidget::drawTickmarks( QPainter* p ) +{ + //the size of the text on the tickmarks + const int space = 20; + + //the distance between the tickmarks in pixel + const int d = 10; + + //the total number of tickmarks to draw (small and long) + const int numberOfTickmarks = ( int )floor( width()/d ); + + double pos = 0.0; + + for ( int i = 0; i < numberOfTickmarks; i++ ) + { + if( i%5 == 0 ) + {//long tickmarks plus text + p->drawLine( i*d, m_realHeight, i*d, m_realHeight+10 ); + if ( i%10 == 0 && + i*d > space && + i*d < width()-space ) + { + pos = ( double ) ( i*d )/width(); + p->fillRect( i*d-space, m_realHeight+12, 2*space, 15, Qt::white ); + p->drawText( i*d-space, m_realHeight+12, 2*space, 15, Qt::AlignCenter, KalziumUtils::localizedValue( KalziumUtils::strippedValue( Wavelength( pos ) ), 6 ) ); + } + } + else {//small tickmarks + p->drawLine( i*d, m_realHeight, i*d, m_realHeight+5 ); + } + } +} + +void SpectrumWidget::keyPressEvent( QKeyEvent *e ) +{ + kdDebug() << "SpectrumWidget::keyPressEvent()" << endl; + switch ( e->key() ) + { + case Key_Plus: + slotZoomIn(); + break; + case Key_Minus: + slotZoomOut(); + break; + } +} + +void SpectrumWidget::slotZoomOut() +{ + kdDebug() << "SpectrumWidget::slotZoomOut() "<< startValue << ":: "<< endValue << endl; + + double diff = endValue - startValue; + + double offset = diff * 0.05; + + endValue = endValue + offset; + startValue = startValue - offset; + + //check for invalid values + if ( startValue < 0.0 ) + startValue = 0.0; + + if ( endValue > 800.0 ) + endValue = 800.0; + + setBorders( ( int ) startValue, ( int )endValue ); + + kdDebug() << "SpectrumWidget::slotZoomOut() "<< startValue << ":: "<< endValue << endl; +} + +void SpectrumWidget::slotZoomIn() +{ + kdDebug() << "SpectrumWidget::slotZoomIn() "<< startValue << ":: "<< endValue << endl; + + double diff = endValue - startValue; + + double offset = diff * 0.05; + + endValue = endValue - offset; + startValue = startValue + offset; + + setBorders( ( int ) startValue, ( int )endValue ); + + kdDebug() << "SpectrumWidget::slotZoomIn() "<< startValue << ":: "<< endValue << endl; +} + +void SpectrumWidget::mouseMoveEvent( QMouseEvent *e ) +{ + m_LMBPointCurrent = e->pos(); + update(); +} + +void SpectrumWidget::mousePressEvent( QMouseEvent *e ) +{ + if ( e->button() == QMouseEvent::LeftButton ) + m_LMBPointPress = e->pos(); + if ( e->button() == QMouseEvent::RightButton ) + slotZoomOut(); +//FIXME +//the tooltip is not really working. Better to not have it +//in KDE 3.4 and think of a better solution. +//PrepareTooltip( Wavelength( ( double )e->pos().x()/width() ) ); +} + +void SpectrumWidget::PrepareTooltip( double wavelength ) +{ + Spectrum::band band; + + QValueList<Spectrum::band>::const_iterator it = m_spectrum->bandlist()->begin(); + const QValueList<Spectrum::band>::const_iterator itEnd = m_spectrum->bandlist()->end(); + + //find the difference in percent (1.0 is 100%, 0.1 is 10%) + double dif = 0.0; + + bool foundWavelentgh = false; + + //find the highest intensity + for ( ; it != itEnd; ++it ) + { + double thisdif = ( *it ).wavelength / wavelength; + + if ( thisdif < 0.9 || thisdif > 1.1 ) + continue; + + if ( thisdif > 1.0 ){//convert for example 1.3 to 0.7 + thisdif = thisdif-1; + thisdif = 1-thisdif; + } + + if ( thisdif > dif ) + { + dif = thisdif; + band = *it; + foundWavelentgh = true; + } + } + if ( foundWavelentgh ) + { + m_band = band; + m_showtooltip = true; + } + else + m_showtooltip = false; + + kdDebug() << "SpectrumWidget::PrepareTooltip(): "<< m_showtooltip << endl; + update(); +} + +void SpectrumWidget::drawTooltip( QPainter *p ) +{ + p->setPen( Qt::white ); + QPoint pt = mapFromGlobal( QCursor::pos() ); + p->drawText( pt, i18n("Wavelength: %1").arg(m_band.wavelength) ); + pt.setY( pt.y() + 15 ); + p->drawText( pt, i18n("Intensity: %1").arg(m_band.intensity) ); + pt.setY( pt.y() + 15 ); + p->drawText( pt, i18n("Energy 1, Energy 2: %1, %2").arg(m_band.energy1).arg( m_band.energy2 )); + pt.setY( pt.y() + 15 ); + p->drawText( pt, i18n("Term 1, Term 2: %1, %2").arg(m_band.term1).arg( m_band.term2 )); + pt.setY( pt.y() + 15 ); + p->drawText( pt, i18n("J 1, J 2: %1, %2").arg(m_band.J1).arg( m_band.J2 )); +} + +void SpectrumWidget::mouseReleaseEvent( QMouseEvent *e ) +{ + if ( e->button() == QMouseEvent::LeftButton ) + { + int left = (int)Wavelength( ( double )m_LMBPointPress.x()/width() ); + int right = (int)Wavelength( ( double )e->pos().x()/width() ); + + if ( left == right ) + return; + + if ( left > right ) + setBorders( right, left ); + else + setBorders( left, right ); + } + + m_LMBPointPress.setX( -1 ); + m_LMBPointCurrent.setX( -1 ); +} + +QPixmap SpectrumWidget::pixmap() +{ + QPixmap tmp( m_pixmap ); + QString text; + + if( m_type == EmissionSpectrum ) + text = i18n( "Emission spectrum of %1" ).arg( m_spectrum->parentElement()->elname() ); + else + text = i18n( "Absorption spectrum of %1" ).arg( m_spectrum->parentElement()->elname() ); + + QPainter p( &tmp ); + p.setPen( Qt::black ); + p.drawText( 30, m_realHeight + 70, text ); + + return tmp; +} + +#include "spectrumwidget.moc" + diff --git a/kalzium/src/spectrumwidget.h b/kalzium/src/spectrumwidget.h new file mode 100644 index 00000000..84a6fd80 --- /dev/null +++ b/kalzium/src/spectrumwidget.h @@ -0,0 +1,234 @@ +/*************************************************************************** + * Copyright (C) 2005 by Carsten Niehaus * + * cniehaus@kde.org * + * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ +#ifndef SPECTRUMWIDGET_H +#define SPECTRUMWIDGET_H + +#include <qwidget.h> + +#include <qpixmap.h> + +#include "spectrum.h" + +/** + * @author Carsten Niehaus + * + */ +class SpectrumWidget : public QWidget +{ + Q_OBJECT + + public: + SpectrumWidget( QWidget *parent, const char* name = 0 ); + + ~SpectrumWidget(){} + + void setSpectrum( Spectrum* spec ){ + m_spectrum = spec; + update(); + } + + Spectrum* spectrum()const{ + return m_spectrum; + } + + /** + * This limits the width of the spectrum in terms of + * wavelength. For example you can set it to only + * show the area between 500 and 550 nm. Invalid values + * will be set back to the default start- and stopvalues + * + * @param left the left border + * @param right the right border + */ + void setBorders( double left, double right ){ + //check for invalid values + if ( startValue < 0.0 ) + startValue = 0.0; + + if ( endValue > 800.0 ) + endValue = 800.0; + + startValue = left; + endValue = right; + + update(); + } + + /** + * find the nearest band. The returned value is the number + * of pixel the next band is away + */ + int findNearestBand( QValueList<double>::iterator it ); + + /** + * there are several possible types. + */ + enum SpectrumType + { + EmissionSpectrum = 0, + AbsorptionSpectrum + }; + + /** + * sets the type of the spectrum to @p t + * @param t the type of the spectrum + */ + void setType( SpectrumType t ){ + m_type = t; + } + + /** + * @return the currently active type + * of the spectrum + */ + SpectrumType spectrumType() const{ + return m_type; + } + + /** + * @returns the color of a line + * @param spectrum the value of the spectrum + */ + QColor linecolor( double spectrum ); + + double Gamma; + int IntensityMax; + + /** + * @return the adjusted value of the @p color. The + * correction depends on @p factor which has been + * figured out emperically + */ + int Adjust( double color, double factor ); + + /** + * @return the postion in the widget of a band + * with the wavelength @p wavelength + * + * @param wavelength the wavelength for which the position is needed + */ + inline int xPos( double wavelength ){ + return ( int ) ( ( wavelength-startValue ) * width() / ( endValue - startValue ) ); + } + + void PrepareTooltip( double wavelength ); + + void showTooltip( Spectrum::band band ); + + /** + * @param xpos The ratio of the position relative to the width + * of the widget. + * @return the wavelength on position @p xpos + */ + inline double Wavelength( double xpos ){ + return startValue + ( ( endValue-startValue ) * xpos ); + } + + /** + * This method changes the three values @p r, @p g and @p b to the + * correct values + * @param wavelength the wavelength for which the color is searched + * @param r red + * @param g green + * @param b blue + */ + void wavelengthToRGB( double wavelength, int& r, int& g, int& b ); + + QPixmap pixmap(); + + private: + QValueList<double> m_spectra; + + SpectrumType m_type; + + Spectrum *m_spectrum; + + QPixmap m_pixmap; + + bool m_showtooltip; + + Spectrum::band m_band; + + void paintBands( QPainter* p ); + void drawZoomLine( QPainter* p ); + void drawTooltip( QPainter *p ); + + /** + * Draw the scale + */ + void drawTickmarks( QPainter *p ); + + double startValue; + double endValue; + + int m_realHeight; + + /** + * this QPoint stores the information where + * the left mouse button has been pressed. This + * is used for the mouse zooming + */ + QPoint m_LMBPointPress; + + QPoint m_LMBPointCurrent; + + public slots: + /** + * set the the maximum value to @p value + */ + void setRightBorder( int value ){ + endValue = value; + if ( endValue < startValue ) + startValue = endValue-1; + update(); + } + + /** + * set the the minimum value to @p value + */ + void setLeftBorder( int value ){ + startValue = value; + if ( startValue > endValue ) + endValue = startValue+1; + update(); + } + + /** + * activates the spectrum of the type @p spectrumtype + */ + void slotActivateSpectrum( int spectrumtype ){ + m_type = ( SpectrumType )spectrumtype; + update(); + } + + private slots: + void slotZoomIn(); + void slotZoomOut(); + + protected: + virtual void paintEvent( QPaintEvent *e ); + virtual void keyPressEvent(QKeyEvent *e); + virtual void mouseMoveEvent( QMouseEvent *e ); + virtual void mousePressEvent( QMouseEvent *e ); + virtual void mouseReleaseEvent( QMouseEvent *e ); +}; + +#endif // SPECTRUMWIDGET_H diff --git a/kalzium/src/tempunit.cpp b/kalzium/src/tempunit.cpp new file mode 100644 index 00000000..55d3630f --- /dev/null +++ b/kalzium/src/tempunit.cpp @@ -0,0 +1,134 @@ +/*************************************************************************** + * Copyright (C) 2005 by Pino Toscano * + * toscano.pino@tiscali.it * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include "tempunit.h" + +double TempUnit::convert( double value, TempUnit::Unit from, TempUnit::Unit to ) +{ + /** + * These are the four formula needed to convert from + * Kelvin the the other units: + + Kelvin Celsius °C = K - 273,15 + Kelvin Fahrenheit °F = K × 1,8 - 459,67 + Kelvin Rankine °Ra = K × 1,8 + Kelvin Reaumur °R = ( K - 273,15 ) × 0,8 + */ + + if ( from != Kelvin ) + value = convertToKelvin( value, from ); + + //now 'value' is in Kelvin + switch( to ) + { + case Celsius: + return value - 273.16; + case Fahrenheit: + return value * 1.8 - 459.67; + case Rankine: + return value * 1.8; + case Reaumur: + return ( value - 273.15 )* 0.8; + case Kelvin: + return value; + } + return value; +} + +double TempUnit::convertToKelvin( const double value, TempUnit::Unit from ) +{ + switch( from ) + { + case Kelvin: + return value; + case Celsius: + return value + 273.16; + case Fahrenheit: + return ( value + 459.67 )/1.8; + case Rankine: + return value / 1.8; + case Reaumur: + return ( value * 1.25 ) + 273.15; + } + return value; +} + +double TempUnit::convert( const double value, int from, int to ) +{ + return convert( value, (TempUnit::Unit)from, (TempUnit::Unit)to ); +} + +QStringList TempUnit::unitListSymbols() +{ + QStringList list; + list << "K"; + list << QString::fromUtf8("°C"); + list << QString::fromUtf8("°F"); + list << QString::fromUtf8("°Ra"); + list << QString::fromUtf8("°R"); + return list; +} + +QString TempUnit::unitListSymbol( int i ) +{ + QStringList l = unitListSymbols(); + if ( ( i < 0 ) || ( i >= (int)l.count() ) ) + return l[0]; + return l[i]; +} + +QPair<double, double> TempUnit::rangeForUnit( TempUnit::Unit u ) +{ + switch( u ) + { + case Kelvin: + { + return QPair<double, double>( 0.0, 5000.0 ); + break; + } + case Celsius: + { + return QPair<double, double>( -273.16, 4726.84 ); + break; + } + case Fahrenheit: + { + return QPair<double, double>( -459.67, 8540.33 ); + break; + } + case Rankine: + { + return QPair<double, double>( 0.0, 9000.0 ); + break; + } + case Reaumur: + { + return QPair<double, double>( -218.52, 3781.48 ); + break; + } + } + return QPair<double, double>( 0.0, 5000.0 ); +} + +QPair<double, double> TempUnit::rangeForUnit( int u ) +{ + return rangeForUnit( (TempUnit::Unit)u ); +} + diff --git a/kalzium/src/tempunit.h b/kalzium/src/tempunit.h new file mode 100644 index 00000000..db4c366e --- /dev/null +++ b/kalzium/src/tempunit.h @@ -0,0 +1,92 @@ +#ifndef TEMPUNIT_H +#define TEMPUNIT_H +/*************************************************************************** + * Copyright (C) 2005 by Pino Toscano * + * toscano.pino@tiscali.it * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the * + * Free Software Foundation, Inc., * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * + ***************************************************************************/ + +#include <qpair.h> +#include <qstringlist.h> + +/** + * This class obtains all the info needed to work with the units of measure + * of temperature. + * + * It has static methods you can call to get the various infos. The most + * important methods is convert(), that performs conversions. + * + * @author Pino Toscano + */ +class TempUnit +{ + public: + + enum Unit { Kelvin = 0, + Celsius, + Fahrenheit, + Rankine, + Reaumur + }; + + /** + * Convert the temperature unit @p value given in the unit + * @p from to the unit @p to. + * + * @return the value converted + */ + static double convert( double value, + TempUnit::Unit from, + TempUnit::Unit to ); + + + /** + * @param value the temperature to convert + * @param from the unit from which to convert + * + * @return the temperature to Kelvin + */ + static double convertToKelvin( const double value, + TempUnit::Unit from ); + + /** + * @overload + */ + static double convert( const double value, + int from, + int to ); + + /** + * @return a list with the symbols of the temperature units + * we support + */ + static QStringList unitListSymbols(); + + /** + * @return the symbol of the @p i -th unit + */ + static QString unitListSymbol( int i ); + + static QPair<double, double> rangeForUnit( TempUnit::Unit u ); + + /** + * @overload + */ + static QPair<double, double> rangeForUnit( int u ); + +}; +#endif // TEMPUNIT_H diff --git a/kalzium/src/timewidget.ui b/kalzium/src/timewidget.ui new file mode 100644 index 00000000..fcb46391 --- /dev/null +++ b/kalzium/src/timewidget.ui @@ -0,0 +1,201 @@ +<!DOCTYPE UI><UI version="3.3" stdsetdef="1"> +<class>TimeWidget</class> +<widget class="QWidget"> + <property name="name"> + <cstring>TimeWidget</cstring> + </property> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>196</width> + <height>396</height> + </rect> + </property> + <vbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <spacer> + <property name="name"> + <cstring>spacer3</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Fixed</enum> + </property> + <property name="sizeHint"> + <size> + <width>21</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout3</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QLabel"> + <property name="name"> + <cstring>lbl1_2</cstring> + </property> + <property name="sizePolicy"> + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Year:</string> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer1_2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>21</height> + </size> + </property> + </spacer> + </hbox> + </widget> + <widget class="QLayoutWidget"> + <property name="name"> + <cstring>layout5</cstring> + </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <widget class="QSlider"> + <property name="name"> + <cstring>time_slider</cstring> + </property> + <property name="minValue"> + <number>1650</number> + </property> + <property name="maxValue"> + <number>2005</number> + </property> + <property name="value"> + <number>1994</number> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="tickmarks"> + <enum>Below</enum> + </property> + <property name="tickInterval"> + <number>50</number> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>spacer9</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Fixed</enum> + </property> + <property name="sizeHint"> + <size> + <width>5</width> + <height>21</height> + </size> + </property> + </spacer> + <widget class="KIntSpinBox"> + <property name="name"> + <cstring>Number1</cstring> + </property> + <property name="maxValue"> + <number>2005</number> + </property> + <property name="minValue"> + <number>1650</number> + </property> + <property name="value"> + <number>1994</number> + </property> + </widget> + </hbox> + </widget> + <spacer> + <property name="name"> + <cstring>verticalSpacer</cstring> + </property> + <property name="orientation"> + <enum>Vertical</enum> + </property> + <property name="sizeType"> + <enum>Fixed</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>16</height> + </size> + </property> + </spacer> + <widget class="QTextEdit"> + <property name="name"> + <cstring>text</cstring> + </property> + <property name="font"> + <font> + <bold>1</bold> + </font> + </property> + <property name="text"> + <string>Move the slider +to find out about +the discovery dates +of the elements</string> + </property> + <property name="wordWrap"> + <enum>WidgetWidth</enum> + </property> + </widget> + </vbox> +</widget> +<customwidgets> +</customwidgets> +<connections> + <connection> + <sender>Number1</sender> + <signal>valueChanged(int)</signal> + <receiver>time_slider</receiver> + <slot>setValue(int)</slot> + </connection> + <connection> + <sender>time_slider</sender> + <signal>valueChanged(int)</signal> + <receiver>Number1</receiver> + <slot>setValue(int)</slot> + </connection> +</connections> +<layoutdefaults spacing="6" margin="11"/> +<includehints> + <includehint>knuminput.h</includehint> +</includehints> +</UI> diff --git a/kalzium/src/timewidget_impl.cpp b/kalzium/src/timewidget_impl.cpp new file mode 100644 index 00000000..5f460f4a --- /dev/null +++ b/kalzium/src/timewidget_impl.cpp @@ -0,0 +1,40 @@ +/*************************************************************************** + copyright : (C) 2005 by Carsten Niehaus + copyright : (C) 2005 by Pino Toscano + email : kalzium@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include "timewidget_impl.h" + +#include <qlayout.h> +#include <qsizepolicy.h> +#include <qslider.h> +#include <qtextedit.h> + +#include <knuminput.h> + +TimeWidgetIMPL::TimeWidgetIMPL( QWidget *parent, const char* name ) + : TimeWidget( parent, name ) +{ + text->setAlignment( text->alignment() | Qt::WordBreak ); + text->setTextFormat( Qt::RichText ); + text->setReadOnly( true ); + text->setPaletteBackgroundColor( paletteBackgroundColor() ); + text->setFrameStyle( QFrame::NoFrame ); +} + +void TimeWidgetIMPL::slotChanged( int value ) +{ + ( void )value; + text->hide(); + verticalSpacer->changeSize( 21, 5, QSizePolicy::Fixed, QSizePolicy::Expanding ); +} + +#include "timewidget_impl.moc" diff --git a/kalzium/src/timewidget_impl.h b/kalzium/src/timewidget_impl.h new file mode 100644 index 00000000..6664ca15 --- /dev/null +++ b/kalzium/src/timewidget_impl.h @@ -0,0 +1,41 @@ +#ifndef TIMEWIDGET_IMPL_H +#define TIMEWIDGET_IMPL_H + +/*************************************************************************** + copyright : (C) 2005 by Carsten Niehaus + email : cniehaus@kde.org + ***************************************************************************/ +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "timewidget.h" + +/** + * @author Carsten Niehaus + */ +class TimeWidgetIMPL : public TimeWidget +{ + Q_OBJECT + + public: + /** + * @param parent The parent of this widget + * @param name The name of this widget + */ + TimeWidgetIMPL( QWidget *parent = 0, const char* name = 0 ); + + public slots: + /** + * this slot will react to the new year + * @param value the new year + */ + void slotChanged( int value ); +}; +#endif // TIMEWIDGET_IMPL_H + |