Structure-Preserving Numerical Methods For Engineering Applications