subroutine courant(dt) implicit none include 'itg.par' include 'itg.cmn' real vmax1,dt(mz) integer i,m c c ******************************************************************* c Check Courant condition: c vmax1=0. do i=1,nspecies call maxv(phi_u(1,1,1,i),vmax1) c c With our FLR models, the nonlinear FLR terms are always smaller than c the main term, so the next two lines are unnecessary. This may not be c true for such models as the Taylor series FLR with nonlinear FLR. c c call maxv(phi_flr1(1,1,1,i),vmax1) c call maxv(phi_flr2(1,1,1,i),vmax1) enddo vmax1=max(dtadj/dt0,vmax1) do m=1,md dt(m)=min(dt0,dtadj/vmax1) enddo return end c c********************************************************** c subroutine maxv(b,max_vel) implicit none include 'itg.par' include 'itg.cmn' complex b(lz,mz,nz),kxb(lz,mz,nz),kyb(lz,mz,nz), * kxb1(nzz,mz*lz),kyb1(nzz,mz*lz) real max_vel,mr integer l,m,n,imode do n=1,nd do l=1,ldb kyb(l,1,n)=0. kxb(l,1,n)=ii/y0*shr*r0(1,n)*b(l,1,n) enddo enddo do m=2,md do n=1,nd mr=float(mrr(m,n)) do l=1,ldb kyb(l,m,n)=ii*mr/y0*b(l,m,n) kxb(l,m,n)=ii*mr/y0*shr*r0(m,n)*b(l,m,n) enddo enddo enddo call xspacec(kxb,kxb1) call yspace(kxb1,kxb3) call xspacec(kyb,kyb1) call yspace(kyb1,kyb3) do m=1,malias do imode=1,nalias*ldb max_vel=max(max(max_vel, * abs(real(kyb3(m,imode)))*cflx), * abs(real(kxb3(m,imode)))*cfly) enddo enddo return end