gfortran does not allow character arrays with varying component lengths
Solution 1:
You have some lengths 12 in the constructor, so it may be better to use length 12.
Also, use instead
character(len=12), dimension(5) :: models = [character(len=12) :: "feddes.swp", &
"jarvis89.swp", "jarvis10.swp", "pem.swp", "van.swp"]
Possibly even better, if you have compiler support, is
character(len=*), dimension(*) :: ...
Solution 2:
The original code is accepted by ifort but it is not standard fortran, hence the error from gfortran. If you supply the option -std
to ifort it will print warnings when the compiler allows extensions such as this.