using System.Collections.Generic;
using Project_Periodensystem.Model;
namespace Project_Periodensystem.Persistence
{
///
/// Statische Datenquelle für alle chemischen Elemente des Periodensystems
///
/// ZWECK UND DATENMODELL:
/// - Eingebaute, unveränderliche Datenbasis für das Periodensystem
/// - Fallback-Datenquelle wenn externe JSON-Dateien nicht verfügbar sind
/// - Demonstration großer statischer Datenstrukturen in C#
/// - Vollständige wissenschaftliche Elementdaten für Bildungszwecke
///
/// DATENORGANISATION:
/// - 118 chemische Elemente (vollständiges Periodensystem bis 2023)
/// - Organisiert nach Perioden (Zeilen) für bessere Lesbarkeit
/// - Jedes Element mit 9 Eigenschaften (AtomicNumber bis Column)
/// - Wissenschaftlich korrekte Daten basierend auf IUPAC-Standards
///
/// C# KONZEPTE:
/// - Static Class: Globaler Zugriff ohne Instanziierung
/// - Static Property: Elements als unveränderliche Datenquelle
/// - Collection Initializer: new List<Element> { ... } Syntax
/// - Object Initializer: new Element(...) für jeden Eintrag
/// - Large Data Arrays: Umgang mit umfangreichen Datensätzen
///
/// DESIGN PATTERNS:
/// - Static Factory: Stellt vorgefertigte Element-Sammlung bereit
/// - Immutable Data: Nur Getter, keine Setter für Elements
/// - Reference Data: Unveränderliche Stammdaten
/// - Embedded Resource: Daten sind Teil der kompilierten Assembly
///
/// WISSENSCHAFTLICHE GENAUIGKEIT:
/// - Atomgewichte: Relative Atommassen basierend auf IUPAC 2021
/// - Elektronegativität: Pauling-Skala mit 2 Dezimalstellen
/// - Dichte: g/cm³ bei Standardbedingungen (20°C, 1 atm)
/// - Elementserien: Moderne Klassifikation nach chemischen Eigenschaften
/// - Positionen: Row/Column entsprechen Standard-Periodensystem-Layout
///
/// WARTUNG UND ERWEITERUNG:
/// - Neue Elemente können einfach zur Liste hinzugefügt werden
/// - Datenformat ist konsistent und selbst-dokumentierend
/// - Kommentare gruppieren Elemente nach Perioden für Übersichtlichkeit
/// - Jeder Eintrag folgt dem gleichen Schema für Konsistenz
///
public static class PeriodicTableData
{
///
/// Vollständige Liste aller bekannten chemischen Elemente
///
/// DATENSTRUKTUR:
/// - List<Element>: Dynamische Sammlung von Element-Objekten
/// - Static Property: Einmalige Initialisierung beim ersten Zugriff
/// - Read-Only: Nur Getter, keine externe Manipulation möglich
/// - Auto-Property: Compiler generiert backing field automatisch
///
/// INITIALISIERUNG:
/// - Collection Initializer: Elegante Syntax für große Datenmengen
/// - Compile-Time: Alle Daten werden zur Compile-Zeit in Assembly eingebettet
/// - Memory Efficient: Daten werden nur einmal geladen und geteilt
///
/// ZUGRIFF:
/// var elements = PeriodicTableData.Elements;
/// var hydrogen = elements.First(e => e.Symbol == "H");
///
public static List Elements { get; } = new List
{
// ===== ERSTE PERIODE =====
// Die einfachsten Elemente: Wasserstoff und Helium
// Besonderheiten: Nur 1s-Orbitale gefüllt, einzigartige Eigenschaften
new Element( 1, "H", "Wasserstoff", 1.008, 2.20, 0.000, "Nichtmetall", 0, 0), // Leichtestes Element, Grundbaustein des Universums
new Element( 2, "He", "Helium", 4.003, 0.00, 0.001, "Edelgas", 0, 17), // Edelgas mit vollständiger Schale, chemisch inert
// ===== ZWEITE PERIODE =====
// Elemente mit 2 Elektronenschalen (1s² + 2s/2p)
// Wichtige biologische und technische Elemente
new Element( 3, "Li", "Lithium", 6.940, 0.98, 0.534, "Alkalimetall", 1, 0), // Leichtestes Metall, wichtig für Batterien
new Element( 4, "Be", "Beryllium", 9.012, 1.57, 1.850, "Erdalkalimetall", 1, 1), // Leicht aber giftig, Luft-/Raumfahrt
new Element( 5, "B", "Bor", 10.810,2.04, 2.340, "Halbmetall", 1, 12), // Grenze zwischen Metall/Nichtmetall
new Element( 6, "C", "Kohlenstoff", 12.011,2.55, 2.267, "Nichtmetall", 1, 13), // Basis allen Lebens, vielfältigste Chemie
new Element( 7, "N", "Stickstoff", 14.007,3.04, 0.001, "Nichtmetall", 1, 14), // 78% der Atmosphäre, wichtig für Proteine
new Element( 8, "O", "Sauerstoff", 15.999,3.44, 0.001, "Nichtmetall", 1, 15), // Lebenswichtig, 21% der Atmosphäre
new Element( 9, "F", "Fluor", 18.998,3.98, 0.002, "Halogen", 1, 16), // Höchste Elektronegativität, sehr reaktiv
new Element( 10, "Ne", "Neon", 20.180,0.00, 0.001, "Edelgas", 1, 17), // Leuchtreklame, chemisch inert
// ===== DRITTE PERIODE =====
// Erste Periode mit d-Orbital-Möglichkeiten
// Viele technisch wichtige Elemente (Aluminium, Silizium)
new Element( 11, "Na", "Natrium", 22.990,0.93, 0.971, "Alkalimetall", 2, 0), // Kochsalz, lebenswichtig für Nerven
new Element( 12, "Mg", "Magnesium", 24.305,1.31, 1.738, "Erdalkalimetall", 2, 1), // Chlorophyll-Zentrum, leichte Legierungen
new Element( 13, "Al", "Aluminium", 26.982,1.61, 2.698, "Post-Übergangsmetall",2, 12), // Häufigstes Metall der Erdkruste
new Element( 14, "Si", "Silizium", 28.085,1.90, 2.329, "Halbmetall", 2, 13), // Basis der Halbleiter-Technologie
new Element( 15, "P", "Phosphor", 30.974,2.19, 1.820, "Nichtmetall", 2, 14), // DNA/RNA, Energie-Übertragung (ATP)
new Element( 16, "S", "Schwefel", 32.060,2.58, 2.067, "Nichtmetall", 2, 15), // Proteine, Vulkanismus
new Element( 17, "Cl", "Chlor", 35.450,3.16, 0.003, "Halogen", 2, 16),
new Element( 18, "Ar", "Argon", 39.948,0.00, 0.002, "Edelgas", 2, 17),
// Vierte Periode
new Element( 19, "K", "Kalium", 39.098,0.82, 0.862, "Alkalimetall", 3, 0),
new Element( 20, "Ca", "Calcium", 40.078,1.00, 1.540, "Erdalkalimetall", 3, 1),
new Element( 21, "Sc", "Scandium", 44.956,1.36, 2.989, "Metall", 3, 2),
new Element( 22, "Ti", "Titan", 47.867,1.54, 4.540, "Metall", 3, 3),
new Element( 23, "V", "Vanadium", 50.942,1.63, 6.110, "Metall", 3, 4),
new Element( 24, "Cr", "Chrom", 51.996,1.66, 7.150, "Metall", 3, 5),
new Element( 25, "Mn", "Mangan", 54.938,1.55, 7.440, "Metall", 3, 6),
new Element( 26, "Fe", "Eisen", 55.845,1.83, 7.874, "Metall", 3, 7),
new Element( 27, "Co", "Cobalt", 58.933,1.88, 8.860, "Metall", 3, 8),
new Element( 28, "Ni", "Nickel", 58.693,1.91, 8.912, "Metall", 3, 9),
new Element( 29, "Cu", "Kupfer", 63.546,1.90, 8.960, "Metall", 3, 10),
new Element( 30, "Zn", "Zink", 65.380,1.65, 7.140, "Metall", 3, 11),
new Element( 31, "Ga", "Gallium", 69.723,1.81, 5.910, "Post-Übergangsmetall",3, 12),
new Element( 32, "Ge", "Germanium", 72.630,2.01, 5.323, "Halbmetall", 3, 13),
new Element( 33, "As", "Arsen", 74.922,2.18, 5.776, "Halbmetall", 3, 14),
new Element( 34, "Se", "Selen", 78.971,2.55, 4.809, "Nichtmetall", 3, 15),
new Element( 35, "Br", "Brom", 79.904,2.96, 3.122, "Halogen", 3, 16),
new Element( 36, "Kr", "Krypton", 83.798,3.00, 0.004, "Edelgas", 3, 17),
// Fünfte Periode
new Element( 37, "Rb", "Rubidium", 85.468,0.82, 1.532, "Alkalimetall", 4, 0),
new Element( 38, "Sr", "Strontium", 87.620,0.95, 2.640, "Erdalkalimetall", 4, 1),
new Element( 39, "Y", "Yttrium", 88.906,1.22, 4.472, "Metall", 4, 2),
new Element( 40, "Zr", "Zirconium", 91.224,1.33, 6.520, "Metall", 4, 3),
new Element( 41, "Nb", "Niob", 92.906,1.60, 8.570, "Metall", 4, 4),
new Element( 42, "Mo", "Molybdän", 95.950,2.16,10.220, "Metall", 4, 5),
new Element( 43, "Tc", "Technetium", 98.000,1.90,11.000, "Metall", 4, 6),
new Element( 44, "Ru", "Ruthenium", 101.070,2.20,12.370, "Metall", 4, 7),
new Element( 45, "Rh", "Rhodium", 102.910,2.28,12.410, "Metall", 4, 8),
new Element( 46, "Pd", "Palladium", 106.420,2.20,12.020, "Metall", 4, 9),
new Element( 47, "Ag", "Silber", 107.868,1.93,10.490, "Metall", 4, 10),
new Element( 48, "Cd", "Cadmium", 112.414,1.69, 8.650, "Metall", 4, 11),
new Element( 49, "In", "Indium", 114.818,1.78, 7.310, "Post-Übergangsmetall",4, 12),
new Element( 50, "Sn", "Zinn", 118.710,1.96, 7.287, "Post-Übergangsmetall",4, 13),
new Element( 51, "Sb", "Antimon", 121.760,2.05, 6.685, "Halbmetall", 4, 14),
new Element( 52, "Te", "Tellur", 127.600,2.10, 6.232, "Halbmetall", 4, 15),
new Element( 53, "I", "Iod", 126.900,2.66, 4.930, "Halogen", 4, 16),
new Element( 54, "Xe", "Xenon", 131.293,2.60, 0.006, "Edelgas", 4, 17),
// Sechste Periode
new Element( 55, "Cs", "Caesium", 132.910,0.79, 1.930, "Alkalimetall", 5, 0),
new Element( 56, "Ba", "Barium", 137.330,0.89, 3.620, "Erdalkalimetall", 5, 1),
// Das 4f-Block (57–71) folgt unten
new Element( 72, "Hf", "Hafnium", 178.490,1.30,13.310, "Metall", 5, 3),
new Element( 73, "Ta", "Tantal", 180.950,1.50,16.654, "Metall", 5, 4),
new Element( 74, "W", "Wolfram", 183.840,2.36,19.250, "Metall", 5, 5),
new Element( 75, "Re", "Rhenium", 186.210,1.90,21.020, "Metall", 5, 6),
new Element( 76, "Os", "Osmium", 190.230,2.20,22.590, "Metall", 5, 7),
new Element( 77, "Ir", "Iridium", 192.220,2.20,22.560, "Metall", 5, 8),
new Element( 78, "Pt", "Platin", 195.080,2.28,21.450, "Metall", 5, 9),
new Element( 79, "Au", "Gold", 196.970,2.54,19.320, "Metall", 5, 10),
new Element( 80, "Hg", "Quecksilber", 200.590,2.00,13.534, "Metall", 5, 11),
new Element( 81, "Tl", "Thallium", 204.380,1.62,11.850, "Post-Übergangsmetall",5, 12),
new Element( 82, "Pb", "Blei", 207.200,2.33,11.340, "Post-Übergangsmetall",5, 13),
new Element( 83, "Bi", "Bismut", 208.980,2.02, 9.780, "Post-Übergangsmetall",5, 14),
new Element( 84, "Po", "Polonium", 209.000,2.00, 9.196, "Post-Übergangsmetall",5, 15),
new Element( 85, "At", "Astat", 210.000,2.20, 7.000, "Halbmetall", 5, 16),
new Element( 86, "Rn", "Radon", 222.000,0.00, 0.010, "Edelgas", 5, 17),
// Siebte Periode (ohne 5f-Block)
new Element( 87, "Fr", "Francium", 223.000,0.70, 1.870, "Alkalimetall", 6, 0),
new Element( 88, "Ra", "Radium", 226.000,0.90, 5.500, "Erdalkalimetall", 6, 1),
new Element(104, "Rf", "Rutherfordium", 267.000,0.00,23.200, "Metall", 6, 3),
new Element(105, "Db", "Dubnium", 270.000,0.00,29.300, "Metall", 6, 4),
new Element(106, "Sg", "Seaborgium", 271.000,0.00,35.000, "Metall", 6, 5),
new Element(107, "Bh", "Bohrium", 270.000,0.00,37.100, "Metall", 6, 6),
new Element(108, "Hs", "Hassium", 270.000,0.00,41.000, "Metall", 6, 7),
new Element(109, "Mt", "Meitnerium", 278.000,0.00,27.000, "_", 6, 8),
new Element(110, "Ds", "Darmstadtium", 281.000,0.00,28.500, "_", 6, 9),
new Element(111, "Rg", "Roentgenium", 282.000,0.00,32.000, "_", 6, 10),
new Element(112, "Cn", "Copernicium", 285.000,0.00,23.700, "_", 6, 11),
new Element(113, "Nh", "Nihonium", 286.000,0.00,16.000, "_", 6, 12),
new Element(114, "Fl", "Flerovium", 289.000,0.00,14.000, "_", 6, 13),
new Element(115, "Mc", "Moscovium", 290.000,0.00,13.500, "_", 6, 14),
new Element(116, "Lv", "Livermorium", 293.000,0.00,12.900, "_", 6, 15),
new Element(117, "Ts", "Tennessine", 294.000,0.00, 7.200, "_", 6, 16),
new Element(118, "Og", "Oganesson", 294.000,0.00, 4.900, "_", 6, 17),
// Lanthanoide (La–Lu) → in Zeile 8 (4f-Block)
new Element( 57, "La", "Lanthan", 138.910,1.10, 6.145, "Lanthanoid", 8, 0),
new Element( 58, "Ce", "Cer", 140.120,1.12, 6.770, "Lanthanoid", 8, 1),
new Element( 59, "Pr", "Praseodym", 140.910,1.13, 6.773, "Lanthanoid", 8, 2),
new Element( 60, "Nd", "Neodym", 144.240,1.14, 7.007, "Lanthanoid", 8, 3),
new Element( 61, "Pm", "Promethium", 145.000,1.13, 7.260, "Lanthanoid", 8, 4),
new Element( 62, "Sm", "Samarium", 150.360,1.17, 7.520, "Lanthanoid", 8, 5),
new Element( 63, "Eu", "Europium", 151.960,1.20, 5.243, "Lanthanoid", 8, 6),
new Element( 64, "Gd", "Gadolinium", 157.250,1.20, 7.895, "Lanthanoid", 8, 7),
new Element( 65, "Tb", "Terbium", 158.930,1.10, 8.229, "Lanthanoid", 8, 8),
new Element( 66, "Dy", "Dysprosium", 162.500,1.22, 8.550, "Lanthanoid", 8, 9),
new Element( 67, "Ho", "Holmium", 164.930,1.23, 8.795, "Lanthanoid", 8, 10),
new Element( 68, "Er", "Erbium", 167.260,1.24, 9.066, "Lanthanoid", 8, 11),
new Element( 69, "Tm", "Thulium", 168.930,1.25, 9.321, "Lanthanoid", 8, 12),
new Element( 70, "Yb", "Ytterbium", 173.040,1.10, 6.965, "Lanthanoid", 8, 13),
new Element( 71, "Lu", "Lutetium", 174.970,1.27, 9.840, "Lanthanoid", 8, 14),
// Actinoide (Ac–Lr) → in Zeile 9 (5f-Block)
new Element( 89, "Ac", "Actinium", 227.000,1.10,10.070, "Actinoid", 9, 0),
new Element( 90, "Th", "Thorium", 232.040,1.30,11.720, "Actinoid", 9, 1),
new Element( 91, "Pa", "Protactinium", 231.040,1.50,15.370, "Actinoid", 9, 2),
new Element( 92, "U", "Uran", 238.030,1.38,18.950, "Actinoid", 9, 3),
new Element( 93, "Np", "Neptunium", 237.000,1.36,20.450, "Actinoid", 9, 4),
new Element( 94, "Pu", "Plutonium", 244.000,1.28,19.840, "Actinoid", 9, 5),
new Element( 95, "Am", "Americium", 243.000,1.30,13.670, "Actinoid", 9, 6),
new Element( 96, "Cm", "Curium", 247.000,1.30,13.510, "Actinoid", 9, 7),
new Element( 97, "Bk", "Berkelium", 247.000,1.30,14.790, "Actinoid", 9, 8),
new Element( 98, "Cf", "Californium", 251.000,1.30,15.100, "Actinoid", 9, 9),
new Element( 99, "Es", "Einsteinium", 252.000,1.30, 8.840, "Actinoid", 9, 10),
new Element(100, "Fm", "Fermium", 257.000,0.00, 9.700, "Actinoid", 9, 11),
new Element(101, "Md", "Mendelevium", 258.000,0.00,10.300, "Actinoid", 9, 12),
new Element(102, "No", "Nobelium", 259.000,0.00, 9.900, "Actinoid", 9, 13),
new Element(103, "Lr", "Lawrencium", 262.000,0.00,15.600, "Actinoid", 9, 14)
};
}
}