Module:Chemie
Uiterlijk
Module voor informatie over chemische elementen.
local elements = {
{protons= 1, symbol="H", name="waterstof"},
{protons= 2, symbol="He", name="helium"},
{protons= 3, symbol="Li", name="lithium"},
{protons= 4, symbol="Be", name="beryllium"},
{protons= 5, symbol="B", name="boor"},
{protons= 6, symbol="C", name="koolstof"},
{protons= 7, symbol="N", name="stikstof"},
{protons= 8, symbol="O", name="zuurstof"},
{protons= 9, symbol="F", name="fluor"},
{protons= 10, symbol="Ne", name="neon"},
{protons= 11, symbol="Na", name="natrium"},
{protons= 12, symbol="Mg", name="magnesium"},
{protons= 13, symbol="Al", name="aluminium"},
{protons= 14, symbol="Si", name="silicium"},
{protons= 15, symbol="P", name="fosfor"},
{protons= 16, symbol="S", name="zwavel"},
{protons= 17, symbol="Cl", name="chloor"},
{protons= 18, symbol="Ar", name="argon"},
{protons= 19, symbol="K", name="kalium"},
{protons= 20, symbol="Ca", name="calcium"},
{protons= 21, symbol="Sc", name="scandium"},
{protons= 22, symbol="Ti", name="titanium"},
{protons= 23, symbol="V", name="vanadium"},
{protons= 24, symbol="Cr", name="chroom"},
{protons= 25, symbol="Mn", name="mangaan"},
{protons= 26, symbol="Fe", name="ijzer"},
{protons= 27, symbol="Co", name="kobalt"},
{protons= 28, symbol="Ni", name="nikkel"},
{protons= 29, symbol="Cu", name="koper"},
{protons= 30, symbol="Zn", name="zink"},
{protons= 31, symbol="Ga", name="gallium"},
{protons= 32, symbol="Ge", name="germanium"},
{protons= 33, symbol="As", name="arseen"},
{protons= 34, symbol="Se", name="seleen"},
{protons= 35, symbol="Br", name="broom"},
{protons= 36, symbol="Kr", name="krypton"},
{protons= 37, symbol="Rb", name="rubidium"},
{protons= 38, symbol="Sr", name="strontium"},
{protons= 39, symbol="Y", name="yttrium"},
{protons= 40, symbol="Zr", name="zirkonium"},
{protons= 41, symbol="Nb", name="niobium"},
{protons= 42, symbol="Mo", name="molybdeen"},
{protons= 43, symbol="Tc", name="technetium"},
{protons= 44, symbol="Ru", name="ruthenium"},
{protons= 45, symbol="Rh", name="rodium"},
{protons= 46, symbol="Pd", name="palladium"},
{protons= 47, symbol="Ag", name="zilver"},
{protons= 48, symbol="Cd", name="cadmium"},
{protons= 49, symbol="In", name="indium"},
{protons= 50, symbol="Sn", name="tin"},
{protons= 51, symbol="Sb", name="antimoon"},
{protons= 52, symbol="Te", name="telluur"},
{protons= 53, symbol="I", name="jodium"},
{protons= 54, symbol="Xe", name="xenon"},
{protons= 55, symbol="Cs", name="cesium"},
{protons= 56, symbol="Ba", name="barium"},
{protons= 57, symbol="La", name="lanthaan"},
{protons= 58, symbol="Ce", name="cerium"},
{protons= 59, symbol="Pr", name="praseodymium"},
{protons= 60, symbol="Nd", name="neodymium"},
{protons= 61, symbol="Pm", name="promethium"},
{protons= 62, symbol="Sm", name="samarium"},
{protons= 63, symbol="Eu", name="europium"},
{protons= 64, symbol="Gd", name="gadolinium"},
{protons= 65, symbol="Tb", name="terbium"},
{protons= 66, symbol="Dy", name="dysprosium"},
{protons= 67, symbol="Ho", name="holmium"},
{protons= 68, symbol="Er", name="erbium"},
{protons= 69, symbol="Tm", name="thulium"},
{protons= 70, symbol="Yb", name="ytterbium"},
{protons= 71, symbol="Lu", name="lutetium"},
{protons= 72, symbol="Hf", name="hafnium"},
{protons= 73, symbol="Ta", name="tantaal"},
{protons= 74, symbol="W", name="wolfraam"},
{protons= 75, symbol="Re", name="renium"},
{protons= 76, symbol="Os", name="osmium"},
{protons= 77, symbol="Ir", name="iridium"},
{protons= 78, symbol="Pt", name="platina"},
{protons= 79, symbol="Au", name="goud"},
{protons= 80, symbol="Hg", name="kwik"},
{protons= 81, symbol="Tl", name="thallium"},
{protons= 82, symbol="Pb", name="lood"},
{protons= 83, symbol="Bi", name="bismut"},
{protons= 84, symbol="Po", name="polonium"},
{protons= 85, symbol="At", name="astaat"},
{protons= 86, symbol="Rn", name="radon"},
{protons= 87, symbol="Fr", name="francium"},
{protons= 88, symbol="Ra", name="radium"},
{protons= 89, symbol="Ac", name="actinium"},
{protons= 90, symbol="Th", name="thorium"},
{protons= 91, symbol="Pa", name="protactinium"},
{protons= 92, symbol="U", name="uranium"},
{protons= 93, symbol="Np", name="neptunium"},
{protons= 94, symbol="Pu", name="plutonium"},
{protons= 95, symbol="Am", name="americium"},
{protons= 96, symbol="Cm", name="curium"},
{protons= 97, symbol="Bk", name="berkelium"},
{protons= 98, symbol="Cf", name="californium"},
{protons= 99, symbol="Es", name="einsteinium"},
{protons=100, symbol="Fm", name="fermium"},
{protons=101, symbol="Md", name="mendelevium"},
{protons=102, symbol="No", name="nobelium"},
{protons=103, symbol="Lr", name="lawrencium"},
{protons=104, symbol="Rf", name="rutherfordium"},
{protons=105, symbol="Db", name="dubnium"},
{protons=106, symbol="Sg", name="seaborgium"},
{protons=107, symbol="Bh", name="bohrium"},
{protons=108, symbol="Hs", name="hassium"},
{protons=109, symbol="Mt", name="meitnerium"},
{protons=110, symbol="Ds", name="darmstadtium"},
{protons=111, symbol="Rg", name="röntgenium"},
{protons=112, symbol="Cn", name="copernicium"},
{protons=113, symbol="Nh", name="nihonium"},
{protons=114, symbol="Fl", name="flerovium"},
{protons=115, symbol="Mc", name="moscovium"},
{protons=116, symbol="Lv", name="livermorium"},
{protons=117, symbol="Ts", name="tennessine"},
{protons=118, symbol="Og", name="oganesson"},
}
local MAX_ELEMENT_PROTONS = 118
-- allow element lookup by symbol
for i,v in ipairs(elements) do
elements[v.symbol] = v
end
local function symChar(n, i)
i = string.sub(n, i, i) + 1
return string.sub("nubtqphsoe", i, i)
end
local p = {}
-- Lua internal functions with English names
function p.elementSymbol(protons)
if protons == 0 then
return "n"
elseif protons > 0 and protons <= MAX_ELEMENT_PROTONS then
return elements[protons].symbol
elseif protons < 0 or protons > 999 then
return nil
end
-- systematic symbol
local m = tostring(protons)
return string.upper(symChar(m, 1)) .. symChar(m, 2) .. symChar(m, 3)
end
-- arg is atomic number or symbol
function p.elementName(arg)
local protons = tonumber(arg)
local e
if protons == nil then -- symbol
e = elements[arg]
else
e = elements[protons]
end
return e.name
end
function p.atomNumber(symbol)
return elements[symbol].protons
end
-- wiki functions with Dutch names
-- arg is atomic number
function p.elementSymbool(frame)
local args = frame:getParent().args
return p.elementSymbol(tonumber(args[1]))
end
-- arg is atomic number or symbol
function p.elementNaam(frame)
local args = frame:getParent().args
local arg = args[1]
local num = tonumber(arg)
if num ~= nil then
arg = num
end
return p.elementName(arg)
end
-- arg is symbol
function p.atoomNummer(frame)
local args = frame:getParent().args
return p.atomNumber(args[1])
end
return p