subroutine dm_calc(a,omegaz,dml,D_max) implicit none include 'itg.par' include 'itg.cmn' complex a(lz,mz,nz),omegaz(mz,nz) real dml(mz,nz),norm,D_max,avekp2 integer l,m,n D_max=0. do n=1,nd do m=1,md avekp2=0.0 norm=0.0 do l=1,ldb avekp2=avekp2+rkperp2(l,m,n)*cabs(a(l,m,n))**2 norm=norm+cabs(a(l,m,n))**2 enddo if (norm.ne.0.0 .and. avekp2.ne.0.) then avekp2=avekp2/norm dml(m,n)=aimag(omegaz(m,n))/avekp2 else dml(m,n)=0. endif D_max=max(D_max,dml(m,n)) enddo enddo return end