digraph task_dep {
	 # Header
	 compound=true;
	 node[nodesep=0.1, fontsize=20, penwidth=3.];
	 edge[fontsize=0, penwidth=0.5];
	 ranksep=0.8;

	 # Special tasks
	 hydro[color=blue3,shape=folder];
	 limiter[color=black,shape=folder];
	 grav[color=red3,shape=folder];
	 stars[color=darkorange1,shape=folder];
	 drift_part[color=blue3];
	 drift_spart[color=darkorange1];
	 drift_gpart[color=red3];
	 kick2[color=black];
	 timestep[color=black];
	 timestep_limiter[color=black];
	 timestep_sync[color=black];
	 recv_limiter[shape=diamond,style=filled,fillcolor=azure,color=black];
	 recv_tend_part[shape=diamond,style=filled,fillcolor=azure,color=blue3];
	 recv_sf_count[shape=diamond,style=filled,fillcolor=azure,color=darkorange1];
	 cooling[color=blue3];
	 cooling_in[style=filled,fillcolor=grey90,color=blue3];
	 cooling_out[style=filled,fillcolor=grey90,color=blue3];
	 star_formation[color=blue3];
	 kick1[color=black];
	 recv_tend_gpart[shape=diamond,style=filled,fillcolor=azure,color=red3];
	 recv_tend_spart[shape=diamond,style=filled,fillcolor=azure,color=darkorange1];
	 send_tend_part[shape=diamond,style=filled,fillcolor=azure,color=blue3,rank=min];
	 send_limiter[shape=diamond,style=filled,fillcolor=azure,color=black,rank=min];
	 send_tend_spart[shape=diamond,style=filled,fillcolor=azure,color=darkorange1,rank=min];
	 send_tend_gpart[shape=diamond,style=filled,fillcolor=azure,color=red3,rank=min];
	 send_sf_count[shape=diamond,style=filled,fillcolor=azure,color=darkorange1];

	 # Dependencies
	 hydro->stars[fontcolor=blue3,color=blue3]
	 limiter->kick1[fontcolor=black,color=black]
	 limiter->timestep_limiter[fontcolor=black,color=black]
	 stars->timestep_sync[fontcolor=darkorange1,color=darkorange1]
	 hydro->recv_tend_part[fontcolor=blue3,color=blue3]
	 grav->recv_tend_gpart[fontcolor=red3,color=red3]
	 stars->recv_tend_spart[fontcolor=darkorange1,color=darkorange1]
	 stars->recv_tend_spart[fontcolor=darkorange1,color=darkorange1]
	 drift_part->hydro[fontcolor=blue3,color=blue3]
	 drift_part->stars[fontcolor=blue3,color=blue3]
	 drift_part->limiter[fontcolor=blue3,color=blue3]
	 drift_spart->kick2[fontcolor=darkorange1,color=darkorange1]
	 drift_spart->stars[fontcolor=darkorange1,color=darkorange1]
	 drift_gpart->grav[fontcolor=red3,color=red3]
	 hydro->cooling_in[fontcolor=blue3,color=blue3]
	 kick2->timestep[fontcolor=black,color=black]
	 kick2->stars[fontcolor=black,color=black]
	 kick2->star_formation[fontcolor=black,color=black]
	 timestep->kick1[fontcolor=black,color=black]
	 timestep->timestep_limiter[fontcolor=black,color=black]
	 timestep->timestep_sync[fontcolor=black,color=black]
	 timestep->limiter[fontcolor=black,color=black]
	 timestep->send_tend_part[fontcolor=black,color=black]
	 timestep->send_limiter[fontcolor=black,color=black]
	 timestep->send_tend_spart[fontcolor=black,color=black]
	 timestep->send_tend_gpart[fontcolor=black,color=black]
	 timestep_limiter->kick1[fontcolor=black,color=black]
	 timestep_limiter->timestep_sync[fontcolor=black,color=black]
	 timestep_sync->kick1[fontcolor=black,color=black]
	 recv_limiter->limiter[fontcolor=black,color=black]
	 recv_tend_part->limiter[fontcolor=blue3,color=blue3]
	  recv_sf_count->stars[fontcolor=darkorange1,color=darkorange1]
	 grav->kick2[fontcolor=red3,color=red3]
	 cooling->cooling_out[fontcolor=blue3,color=blue3]
	 cooling_in->cooling[fontcolor=blue3,color=blue3]
	 cooling_out->kick2[fontcolor=blue3,color=blue3]
	 star_formation->timestep[fontcolor=blue3,color=blue3]
	 star_formation->stars[fontcolor=blue3,color=blue3]
	 star_formation->send_sf_count[fontcolor=blue3,color=blue3]
	 stars->timestep[fontcolor=darkorange1,color=darkorange1]

   # style
   timestep_limiter->send_tend_part[style=invis];
   timestep_limiter->send_tend_gpart[style=invis];
   timestep_limiter->send_tend_spart[style=invis];
   timestep_limiter->send_limiter[style=invis];
}