BT, you need to sit down with W and say that this behaviour is completely unacceptable and if it happens again you WILL call the police or that you will take the children and leave. End of story! I did that with my W one time when I came home and found her slapping my D who was also 12 at the time. My language was not very kind, I said "if you ever touch my D again I will call the police...are you f@cking crazy?" She has not laid a hand on her since. Btw, I think all your reasons for her anger are probably right on, unhappy people do unhappy things. You can't help her so protect yourself and your kids.