Productive and efficient computational science through domain-specific abstractions