I want to draw the following diagram in TikZ:
Currently I use the following code to do this:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{snakes,arrows,shapes}
\begin{document}
\begin{tikzpicture}[>=latex',node distance = 2cm]
\node (S1) {$S_1$};
\node [left of = S1] (S2) {$S_2$};
\node [above of = S2,node distance=1.04cm] (A) {$A$};
\node [above of = S1,node distance=1.04cm] (B) {$B$};
\node [below of = S2,node distance=1.04cm] (C) {$C$};
\node [below of = S1,node distance=1.04cm] (D) {$D$};
\draw [->,thick] (S1) to[bend left=40] node {} (S2);
\draw [->,thick] (S2) to[bend left=40] node {} (S1);
\draw [->,thick] (A) to[bend right=40] node {} (B);
\draw [->,thick] (D) to[bend right=40] node {} (C);
\end{tikzpicture}
\end{document}
However you will notice that I am using an absolute distance (1.04cm) to make sure that the curves intersect at the mid points. If I change the node distance, the absolute distance must be manually adjusted each time by trial and error. Is there anyway to draw such a diagram using TikZ without using the absolute distance so that when I change the node distance the curves adjust automatically?