#ifndef ELEMENTS #define ELEMENTS #include struct BaseElementProps { float density; // kg/m^3 float meltingPoint; // Kelvin float boilingPoint; // Kelvin float specificHeat; // J/(kg*K) float electronegativity; // Pauling scale }; static const std::array ELEMENT_DB = {{ // 1: Hydrogen {0.08988f, 14.01f, 20.28f, 14304.0f, 2.20f}, // 2: Helium {0.1785f, 0.95f, 4.22f, 5193.0f, 0.0f}, // No electronegativity, using 0 // 3: Lithium {534.0f, 453.69f, 1560.0f, 3582.0f, 0.98f}, // 4: Beryllium {1850.0f, 1560.0f, 2742.0f, 1825.0f, 1.57f}, // 5: Boron {2340.0f, 2349.0f, 4200.0f, 1026.0f, 2.04f}, // 6: Carbon {2267.0f, 4000.0f, 4300.0f, 709.0f, 2.55f}, // 7: Nitrogen {1.2506f, 63.15f, 77.36f, 1040.0f, 3.04f}, // 8: Oxygen {1.429f, 54.36f, 90.2f, 918.0f, 3.44f}, // 9: Fluorine {1.696f, 53.53f, 85.03f, 824.0f, 3.98f}, // 10: Neon {0.9002f, 24.56f, 27.07f, 1030.0f, 0.0f}, // No electronegativity // 11: Sodium {968.0f, 370.87f, 1156.0f, 1228.0f, 0.93f}, // 12: Magnesium {1738.0f, 923.0f, 1363.0f, 1023.0f, 1.31f}, // 13: Aluminium {2700.0f, 933.47f, 2792.0f, 897.0f, 1.61f}, // 14: Silicon {2329.0f, 1687.0f, 3538.0f, 705.0f, 1.9f}, // 15: Phosphorus {1823.0f, 317.3f, 550.0f, 769.0f, 2.19f}, // 16: Sulfur {2070.0f, 388.36f, 717.87f, 710.0f, 2.58f}, // 17: Chlorine {3.2f, 171.6f, 239.11f, 479.0f, 3.16f}, // 18: Argon {1.784f, 83.8f, 87.3f, 520.0f, 0.0f}, // No electronegativity // 19: Potassium {890.0f, 336.53f, 1032.0f, 757.0f, 0.82f}, // 20: Calcium {1550.0f, 1115.0f, 1757.0f, 647.0f, 1.0f}, // 21: Scandium {2985.0f, 1814.0f, 3109.0f, 568.0f, 1.36f}, // 22: Titanium {4506.0f, 1941.0f, 3560.0f, 523.0f, 1.54f}, // 23: Vanadium {6110.0f, 2183.0f, 3680.0f, 489.0f, 1.63f}, // 24: Chromium {7150.0f, 2180.0f, 2944.0f, 449.0f, 1.66f}, // 25: Manganese {7210.0f, 1519.0f, 2334.0f, 479.0f, 1.55f}, // 26: Iron {7874.0f, 1811.0f, 3134.0f, 449.0f, 1.83f}, // 27: Cobalt {8900.0f, 1768.0f, 3200.0f, 421.0f, 1.88f}, // 28: Nickel {8908.0f, 1728.0f, 3186.0f, 444.0f, 1.91f}, // 29: Copper {8960.0f, 1357.77f, 2835.0f, 385.0f, 1.9f}, // 30: Zinc {7140.0f, 692.88f, 1180.0f, 388.0f, 1.65f}, // 31: Gallium {5910.0f, 302.9146f, 2673.0f, 371.0f, 1.81f}, // 32: Germanium {5323.0f, 1211.4f, 3106.0f, 320.0f, 2.01f}, // 33: Arsenic {5727.0f, 1090.0f, 887.0f, 329.0f, 2.18f}, // Sublimes at 887K // 34: Selenium {4810.0f, 453.0f, 958.0f, 321.0f, 2.55f}, // 35: Bromine {3102.8f, 265.8f, 332.0f, 474.0f, 2.96f}, // 36: Krypton {3.749f, 115.79f, 119.93f, 248.0f, 3.0f}, // 37: Rubidium {1532.0f, 312.46f, 961.0f, 363.0f, 0.82f}, // 38: Strontium {2640.0f, 1050.0f, 1655.0f, 301.0f, 0.95f}, // 39: Yttrium {4472.0f, 1799.0f, 3609.0f, 298.0f, 1.22f}, // 40: Zirconium {6520.0f, 2128.0f, 4682.0f, 278.0f, 1.33f}, // 41: Niobium {8570.0f, 2750.0f, 5017.0f, 265.0f, 1.6f}, // 42: Molybdenum {10280.0f, 2896.0f, 4912.0f, 251.0f, 2.16f}, // 43: Technetium {11000.0f, 2430.0f, 4538.0f, 0.0f, 1.9f}, // No specific heat data // 44: Ruthenium {12450.0f, 2607.0f, 4423.0f, 238.0f, 2.2f}, // 45: Rhodium {12410.0f, 2237.0f, 3968.0f, 243.0f, 2.28f}, // 46: Palladium {12023.0f, 1828.05f, 3236.0f, 244.0f, 2.2f}, // 47: Silver {10490.0f, 1234.93f, 2435.0f, 235.0f, 1.93f}, // 48: Cadmium {8650.0f, 594.22f, 1040.0f, 232.0f, 1.69f}, // 49: Indium {7310.0f, 429.75f, 2345.0f, 233.0f, 1.78f}, // 50: Tin {7265.0f, 505.08f, 2875.0f, 228.0f, 1.96f}, // 51: Antimony {6697.0f, 903.78f, 1860.0f, 207.0f, 2.05f}, // 52: Tellurium {6240.0f, 722.66f, 1261.0f, 202.0f, 2.1f}, // 53: Iodine {4933.0f, 386.85f, 457.4f, 214.0f, 2.66f}, // 54: Xenon {5.894f, 161.4f, 165.03f, 158.0f, 2.6f}, // 55: Caesium {1930.0f, 301.59f, 944.0f, 242.0f, 0.79f}, // 56: Barium {3510.0f, 1000.0f, 2170.0f, 204.0f, 0.89f}, // 57: Lanthanum {6162.0f, 1193.0f, 3737.0f, 195.0f, 1.1f}, // 58: Cerium {6770.0f, 1068.0f, 3716.0f, 192.0f, 1.12f}, // 59: Praseodymium {6770.0f, 1208.0f, 3793.0f, 193.0f, 1.13f}, // 60: Neodymium {7010.0f, 1297.0f, 3347.0f, 190.0f, 1.14f}, // 61: Promethium {7260.0f, 1315.0f, 3273.0f, 0.0f, 1.13f}, // No specific heat data // 62: Samarium {7520.0f, 1345.0f, 2067.0f, 197.0f, 1.17f}, // 63: Europium {5244.0f, 1099.0f, 1802.0f, 182.0f, 1.2f}, // 64: Gadolinium {7900.0f, 1585.0f, 3546.0f, 236.0f, 1.2f}, // 65: Terbium {8230.0f, 1629.0f, 3503.0f, 182.0f, 1.2f}, // 66: Dysprosium {8540.0f, 1680.0f, 2840.0f, 170.0f, 1.22f}, // 67: Holmium {8790.0f, 1734.0f, 2993.0f, 165.0f, 1.23f}, // 68: Erbium {9066.0f, 1802.0f, 3141.0f, 168.0f, 1.24f}, // 69: Thulium {9320.0f, 1818.0f, 2223.0f, 160.0f, 1.25f}, // 70: Ytterbium {6900.0f, 1097.0f, 1469.0f, 155.0f, 1.1f}, // 71: Lutetium {9841.0f, 1925.0f, 3675.0f, 154.0f, 1.27f}, // 72: Hafnium {13310.0f, 2506.0f, 4876.0f, 144.0f, 1.3f}, // 73: Tantalum {16690.0f, 3290.0f, 5731.0f, 140.0f, 1.5f}, // 74: Tungsten {19250.0f, 3695.0f, 6203.0f, 132.0f, 2.36f}, // 75: Rhenium {21020.0f, 3459.0f, 5869.0f, 137.0f, 1.9f}, // 76: Osmium {22590.0f, 3306.0f, 5285.0f, 130.0f, 2.2f}, // 77: Iridium {22560.0f, 2719.0f, 4701.0f, 131.0f, 2.2f}, // 78: Platinum {21450.0f, 2041.4f, 4098.0f, 133.0f, 2.28f}, // 79: Gold {19300.0f, 1337.33f, 3129.0f, 129.0f, 2.54f}, // 80: Mercury {13534.0f, 234.43f, 629.88f, 140.0f, 2.0f}, // 81: Thallium {11850.0f, 577.0f, 1746.0f, 129.0f, 1.62f}, // 82: Lead {11340.0f, 600.61f, 2022.0f, 129.0f, 2.33f}, // Using 4+ value // 83: Bismuth {9780.0f, 544.7f, 1837.0f, 122.0f, 2.02f}, // 84: Polonium {9196.0f, 527.0f, 1235.0f, 0.0f, 2.0f}, // No specific heat data // 85: Astatine {8930.0f, 575.0f, 610.0f, 0.0f, 2.2f}, // Approx density, no specific heat // 86: Radon {9.73f, 202.0f, 211.3f, 94.0f, 2.2f}, // 87: Francium {2480.0f, 281.0f, 890.0f, 0.0f, 0.79f}, // Approx values // 88: Radium {5500.0f, 973.0f, 2010.0f, 94.0f, 0.9f}, // 89: Actinium {10000.0f, 1323.0f, 3471.0f, 120.0f, 1.1f}, // 90: Thorium {11700.0f, 2115.0f, 5061.0f, 113.0f, 1.3f}, // 91: Protactinium {15370.0f, 1841.0f, 4300.0f, 0.0f, 1.5f}, // No specific heat data // 92: Uranium {19100.0f, 1405.3f, 4404.0f, 116.0f, 1.38f}, // 93: Neptunium {20450.0f, 917.0f, 4273.0f, 0.0f, 1.36f}, // No specific heat data // 94: Plutonium {19850.0f, 912.5f, 3501.0f, 0.0f, 1.28f}, // No specific heat data // 95: Americium {12000.0f, 1449.0f, 2880.0f, 0.0f, 1.13f}, // No specific heat data // 96: Curium {13510.0f, 1613.0f, 3383.0f, 0.0f, 1.28f}, // No specific heat data // 97: Berkelium {14780.0f, 1259.0f, 2900.0f, 0.0f, 1.3f}, // No specific heat data // 98: Californium {15100.0f, 1173.0f, 1743.0f, 0.0f, 1.3f}, // No specific heat data // 99: Einsteinium {8840.0f, 1133.0f, 1269.0f, 0.0f, 1.3f}, // No specific heat data // 100: Fermium {9700.0f, 1125.0f, 1800.0f, 0.0f, 1.3f}, // Estimated values // 101: Mendelevium {10300.0f, 1100.0f, 0.0f, 0.0f, 1.3f}, // Estimated // 102: Nobelium {9900.0f, 1100.0f, 0.0f, 0.0f, 1.3f}, // Estimated // 103: Lawrencium {14400.0f, 1900.0f, 0.0f, 0.0f, 1.3f}, // Estimated // 104: Rutherfordium {17000.0f, 2400.0f, 5800.0f, 0.0f, 0.0f}, // Estimated // 105: Dubnium {21600.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // Estimated // 106: Seaborgium {23500.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // Estimated // 107: Bohrium {26500.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // Estimated // 108: Hassium {28000.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // Estimated // 109: Meitnerium {27500.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // Estimated // 110: Darmstadtium {26500.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // Estimated // 111: Roentgenium {23000.0f, 0.0f, 0.0f, 0.0f, 0.0f}, // Estimated // 112: Copernicium {14000.0f, 283.0f, 340.0f, 0.0f, 0.0f}, // Estimated // 113: Nihonium {16000.0f, 700.0f, 1400.0f, 0.0f, 0.0f}, // Estimated // 114: Flerovium {11400.0f, 284.0f, 0.0f, 0.0f, 0.0f}, // Estimated // 115: Moscovium {13500.0f, 700.0f, 1400.0f, 0.0f, 0.0f}, // Estimated // 116: Livermorium {12900.0f, 700.0f, 1100.0f, 0.0f, 0.0f}, // Estimated // 117: Tennessine {7200.0f, 700.0f, 883.0f, 0.0f, 0.0f}, // Estimated // 118: Oganesson {7000.0f, 325.0f, 450.0f, 0.0f, 0.0f} // Estimated }}; struct PointProperties { float weight = 0.0f; // Total mass float density = 0.0f; // Mass / Volume float meltingPoint = 0.0f; float boilingPoint = 0.0f; float specificHeat = 0.0f; float electronegativity = 0.0f; }; struct elementContent { float hydrogen = 0.0f; float helium = 0.0f; float lithium = 0.0f; float beryllium = 0.0f; float boron = 0.0f; float carbon = 0.0f; float nitrogen = 0.0f; float oxygen = 0.0f; float fluorine = 0.0f; float neon = 0.0f; float sodium = 0.0f; float magnesium = 0.0f; float aluminum = 0.0f; float silicon = 0.0f; float phosporus = 0.0f; float sulfur = 0.0f; float chlorine = 0.0f; float argon = 0.0f; float potassium = 0.0f; float calcium = 0.0f; float scandium = 0.0f; float titanium = 0.0f; float vanadium = 0.0f; float chromium = 0.0f; float manganese = 0.0f; float iron = 0.0f; float cobalt = 0.0f; float nickel = 0.0f; float copper = 0.0f; float zinc = 0.0f; float gallium = 0.0f; float germanium = 0.0f; float arsenic = 0.0f; float selenium = 0.0f; float bromine = 0.0f; float krypton = 0.0f; float rubidium = 0.0f; float strontium = 0.0f; float yttrium = 0.0f; float zirconium = 0.0f; float niobium = 0.0f; float molybdenum = 0.0f; float technetium = 0.0f; float ruthenium = 0.0f; float rhodium = 0.0f; float palladium = 0.0f; float silver = 0.0f; float cadmium = 0.0f; float indium = 0.0f; float tin = 0.0f; float antimony = 0.0f; float tellurium = 0.0f; float iodine = 0.0f; float xenon = 0.0f; float caesium = 0.0f; float barium = 0.0f; float lanthanum = 0.0f; float cerium = 0.0f; float praseodymium = 0.0f; float neodymium = 0.0f; float promethium = 0.0f; float samarium = 0.0f; float europium = 0.0f; float gadolinium = 0.0f; float terbium = 0.0f; float dysprosium = 0.0f; float holmium = 0.0f; float erbium = 0.0f; float thulium = 0.0f; float ytterbium = 0.0f; float lutetium = 0.0f; float hafnium = 0.0f; float tantalum = 0.0f; float tungsten = 0.0f; float rhenium = 0.0f; float osmium = 0.0f; float iridium = 0.0f; float platinum = 0.0f; float gold = 0.0f; float mercury = 0.0f; float thallium = 0.0f; float lead = 0.0f; float bismuth = 0.0f; float polonium = 0.0f; float astatine = 0.0f; float radon = 0.0f; float francium = 0.0f; float radium = 0.0f; float actinium = 0.0f; float thorium = 0.0f; float protactinium = 0.0f; float uranium = 0.0f; float neptunium = 0.0f; float plutonium = 0.0f; float americium = 0.0f; float curium = 0.0f; float berkelium = 0.0f; float californium = 0.0f; float einsteinium = 0.0f; float fermium = 0.0f; float mendelevium = 0.0f; float nobelium = 0.0f; float lawrencium = 0.0f; float rutherfordium = 0.0f; float dubnium = 0.0f; float seaborgium = 0.0f; float bohrium = 0.0f; float hassium = 0.0f; float meitnerium = 0.0f; float darmstadtium = 0.0f; float roentgenium = 0.0f; float cpernicium = 0.0f; float nihnium = 0.0f; float flerovium = 0.0f; float moscovium = 0.0f; float livermorium = 0.0f; float tennessine = 0.0f; float oganesson = 0.0f; }; #endif