Another problem is that a namelist that contains all the parameters is not global available to the subroutines.
I define and read the namelist in the main program as follows:
REAL :: alpha, vmaxNP, vmaxPZ, Ks, mP, mZ, Phalf, Pzero
INTEGER :: dt, tend
NAMELIST /NPZNAME/ alpha, vmaxNP, vmaxPZ...