# Eulim ## Installation Add this line to your application's Gemfile: ```ruby gem 'eulim' ``` And then execute: $ bundle Or install it yourself as: $ gem install eulim ## Modules * Structrues * Chemistry ### Structures * Pipe ### Chemistry * Element * Compound * Reaction #### Element * H, He, Li, Be, B, C, N, O, F, Ne, Na, Mg, Al, Si, P, S, Cl, Ar, K , Ca, Sc, Ti, V, Cr, Mn, Fe, Co, Ni, Cu, Zn, Ga, Ge, As, Se, Br, Kr, Rb, Sr, Y, Zr, Nb, Mo, Tc, Ru, Rh, Pd, Ag, Cd, In, Sn, Sb, Te, I, Xe, Cs, Ba, La, Ce, Pr, Nd, Pm, Sm, Eu, Gd, Tb, Dy, Ho, Er, Tm, Yb, Lu, Hf, Ta, W, Re, Os, Ir, Pt, Au, Hg, Tl, Pb, Bi, Po, At, Rn, Fr, Ra, Ac, Th, Pa, U, Np, Pu, Am, Cm, Bk, Cf, Es, Fm, Md, No, Lr, Rf, Db, Sg, Bh, Hs, Mt, * attributes: symbol, name, atomic_number, atomic_mass * methods: get_by_* (* can be any of the attributes) #### Compound * attributes: formula, molecular_mass, constituents * methods: new('compound formula') ### Reaction * attributes: equation, is_valid, is_balanced, species, balanced_eqn * methods: new(equation: "Put your reaction string here", rate_equation: "r_{CaCo3} = k[CaO]") * For eg: (equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)', rate_equation: "rNa = k[HCl]") ## Usage ```bash $ Eulim::Chemistry::Element.get_by_symbol "H" => #> $ Eulim::Chemistry::Element.get_by_atomic_number 12 => #> $ Eulim::Chemistry::Element.get_by_name "helium" # or "Helium" => #> $ Eulim::Chemistry::Compound.new("CaCO3") => #{:element=>#>, :atom_count=>1}, "C"=>{:element=>#>, :atom_count=>1}, "O"=>{:element=>#>, :atom_count=>3}}, @molecular_mass=#> $Eulim::Chemistry::Reaction.new(equation: 'KMnO4 + HCl >> KCl + MnCl2 + H2O + Cl2').balanced_eqn => "2KMnO4 + 16HCl >> 2KCl + 2MnCl2 + 8H2O + 5Cl2" $ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').equation => "2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)" $ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').is_valid => true $ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').is_balanced => true $ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)').species => {:reactants=>{"Na"=>{:compound=>#{:element=>#>, :atom_count=>1}}, @molecular_mass=#>, :stoichiometry=>2, :state=>"solid"}, "HCl"=>{:compound=>#{:element=>#>, :atom_count=>1}, "Cl"=>{:element=>#>, :atom_count=>1}}, @molecular_mass=#>, :stoichiometry=>2, :state=>"aqueous"}}, :products=>{"NaCl"=>{:compound=>#{:element=>#>, :atom_count=>1}, "Cl"=>{:element=>#>, :atom_count=>1}}, @molecular_mass=#>, :stoichiometry=>2, :state=>"aqueous"}, "H2"=>{:compound=>#{:element=>#>, :atom_count=>2}}, @molecular_mass=#>, :stoichiometry=>1, :state=>"gaseous"}}} $ Eulim::Chemistry::Reaction.new(equation: '2Na(s) + 2HCl(aq) >> 2NaCl(aq) + H2(g)') => #{"Na"=>{:compound=>#{:element=>#>, :atom_count=>1}}, @molecular_mass=#>, :stoichiometry=>2, :state=>"solid"}, "HCl"=>{:compound=>#{:element=>#>, :atom_count=>1}, "Cl"=>{:element=>#>, :atom_count=>1}}, @molecular_mass=#>, :stoichiometry=>2, :state=>"aqueous"}}, :products=>{"NaCl"=>{:compound=>#{:element=>#>, :atom_count=>1}, "Cl"=>{:element=>#>, :atom_count=>1}}, @molecular_mass=#>, :stoichiometry=>2, :state=>"aqueous"},"H2"=>{:compound=>#{:element=>#>, :atom_count=>2}}, @molecular_mass=#>, :stoichiometry=>1, :state=>"gaseous"}}}, @is_valid=true, @is_balanced=true> ``` ## Development After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). ## Contributing Bug reports and pull requests are welcome on GitHub at https://github.com/syedfazilbasheer-quester/eulim-gem. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct. ## License The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).