Да, массивы указателей смешны в Фортране.
Проблема в том, что это:
TYPE(domain),DIMENSION(:),POINTER :: dom
определяет не массив указателей, как вы могли бы подумать, но указатель на массив. Есть несколько классных вещей, которые вы можете делать с этими вещами в Фортране - указывать на куски больших массивов, даже с шагами - но это определенно указатель на массив, а не массив указателей.
Единственный способ получить массивы указателей в Фортране - это определить тип:
type domainptr
type(domain), pointer :: p
end type mytype
type(domainptr), dimension(3) :: dom
dom(1)%p => d01
dom(2)%p => d02
dom(3)%p => d03
и т.д.. Насколько я могу судить, единственная реальная причина, по которой вы должны сделать это на Фортране, - это синтаксис. Я бы хотел, чтобы это было исправлено в более поздней версии стандарта.