# How to determine stable electron states in ionic and covalent bonds?

I'm working on a program that needs to determine if a bond between two or more elements will result in a stable state. I understand at a high-level how to fill electron subshells using the Aufbau principle, but I also read that in some cases, electrons will jump from a lower energy shell or orbital to a higher one in order to maintain a stable state (Filling Electron Shells).

For example, if I want to determine if Hydrogen and Nitrogen will form a stable bond I would fill the shells for Nitrogen like so:

When adding Hydrogen, would the two electrons in the 2s shell jump to the 2p shell because with the one electron from Hydrogen the HN would then have a full 2p shell? Like this:

Or is this not a stable state? Would it require a large amount of energy to excite or promote those two 2s electrons to the 2p shell?

I'm trying to understand if there are rules or heuristics I can use to estimate if two ore more elements will bond (on there own w/o adding a large amount of energy to the system) using their valence electron configuration like this, or if there are too many exceptions, making it not a simple programming task to estimate this.

-
This question in general is entire point of quantum chemistry, so there is no simple answer on it except "setup run for package [PACKAGE_NAME] and try". In some simple cases , like one you stated, it is possible to note, that for second row of elements 2s-2p gap is hight, so N in HN will have $1s^22s^22p^2$ electronic formula. – permeakra Aug 10 '12 at 10:47
As an addition to what @permeakra said, it might be an idea to edit your question to go into a little more detail on what you're trying to do (and constraints involved) so that someone can either suggest an appropriate approximate method, or maybe tell you that it's impossible. :) – Aesin Aug 10 '12 at 13:52
@Aesin, I've edited my question a bit to explain what I'm trying to do. Perhaps it's not possible to code some simple rules and I need to run a package such at StochKit? – Matt Palmerlee Aug 10 '12 at 14:52
@MattPalmerlee: It's still not really clear what sort of level you're aiming at, and I'll try to explain why: generally, two atoms in a vacuum will attract each other. Even helium atoms attract each other, but there's no significant electron transfer between them. If you want to work out whether two atoms can form a covalent bond or an ionic bond, that's an entirely different kettle of fish, and there are some rules based on electronegativity that sort of work for elements down to about calcium - beyond that is dangerous transition zone. – Aesin Aug 10 '12 at 19:19
@Aesin thanks for that, my first version of my program will only go to Calcium (I should have mentioned that before) for simplicity's sake, to basically ignore the transition metals at this point. What I'm imagining is that I could say: I have 3 molecules (let's say no noble gasses), the total electron count is 9 (HLiB or LiC), this is a stable state [bond] because the 2s orbital is 1/2 full and the 2p orbital is full. I'm guessing by the comments and answers so far that it's just not that simple, I have to look at the energies and the geometries, etc... – Matt Palmerlee Aug 10 '12 at 19:45