Describir: Domain decomposition techniques and distributed programming in computational fluid dynamics