#include "dims.h" ! subroutine fmnmx(nnj,chnj,nf1,nf2) use cons_module,only: len1,len2,len3,kmax,kmaxp1,nflds_lab,kflds implicit none ! ! Report min,max of prog/diag fields nf1 to nf2 in f at j-slice nnj: ! (nf1-nf2 in 1-nzflds) ! #include "params.h" #include "fcom.h" #include "index.h" ! ! Args: integer,intent(in) :: nnj,nf1,nf2 character(len=*) chnj ! ! Locals: integer :: n,i,len real :: fmin,fmax character(len=8) :: chnlev ! write(6,"(/'Min,max for fields ',i2,' to ',i2,' at lat ',a, + ' (nnj=',i5,')')')") nf1,nf2,chnj,nnj do n=nf1,nf2 if (kflds(n)==1) then len = len1 chnlev = '1 ' elseif (kflds(n)==2) then len = len2 chnlev = 'KMAX ' else len = len3 chnlev = 'KMAXP1 ' endif fmin = 1.e36 ; fmax = -1.e36 do i=1,len if (f(i,ndexa(n+1)+nnj) < fmin) fmin = f(i,ndexa(n+1)+nnj) if (f(i,ndexa(n+1)+nnj) > fmax) fmax = f(i,ndexa(n+1)+nnj) enddo write(6,"(i2,2x,a,2x,a,2x,i5,2x,a,2x,'mn,mx=', + 2e12.4)") n,nflds_lab(n),chnlev(1:6),ndexa(n+1),chnj(1:5), + fmin,fmax if (n==31.or.n==45) write(6,"(' ')") enddo end subroutine fmnmx !----------------------------------------------------------------------- subroutine fpmnmx(nf1,nf2) use cons_module,only: len1,len2,len3,kmax,kmaxp1,nphys_lab implicit none ! ! Report min,max of phys fields nf1 to nf2 in f: ! (nf1-nf2 in 1-nzphys) ! #include "params.h" #include "fcom.h" #include "index.h" ! ! Args: integer,intent(in) :: nf1,nf2 ! ! Locals: integer :: n,i,len real :: fmin,fmax character(len=8) :: chnlev integer :: KPHYS(nphys) = (/ | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,3 ,3 ,3 ,3 , | 3 ,3 ,1 ,3 ,3 ,3 /) ! write(6,"(/'Min,max for phys fields ',i2,' to ',i2)") nf1,nf2 do n=nf1,nf2 if (kphys(n)==1) then len = len1 chnlev = '1 ' elseif (kphys(n)==2) then len = len2 chnlev = 'KMAX ' else len = len3 chnlev = 'KMAXP1 ' endif fmin = 1.e36 ; fmax = -1.e36 do i=1,len if (f(i,ndexb(n+1)) < fmin) fmin = f(i,ndexb(n+1)) if (f(i,ndexb(n+1)) > fmax) fmax = f(i,ndexb(n+1)) enddo write(6,"(i2,2x,a,2x,a,2x,i5,2x,'mn,mx=',2e12.4)") + n,nphys_lab(n),chnlev,ndexb(n+1),fmin,fmax if (n==15) write(6,"(' ')") enddo end !----------------------------------------------------------------------- subroutine fgmnmx(j,ixtime,nf1,nf2) use cons_module,only: len1,len2,len3,kflds implicit none #include "params.h" #include "fgcom.h" #include "index.h" ! ! Args: integer,intent(in) :: j,ixtime,nf1,nf2 ! ! Locals: integer :: n,i,len real :: fmin,fmax ! write(6,"(/'fgmnmx: j=',i3,' ixtime=',i3,' nf1,2=',2i3)") + j,ixtime,nf1,nf2 do n=nf1,nf2 if (kflds(n)==1) then len = len1 elseif (kflds(n)==2) then len = len2 else len = len3 endif fmin = 1.e36 ; fmax = -1.e36 do i=1,len if (fg(i,ndexa(n+1)+1,j,ixtime) < fmin) + fmin = fg(i,ndexa(n+1)+1,j,ixtime) if (fg(i,ndexa(n+1)+1,j,ixtime) > fmax) + fmax = fg(i,ndexa(n+1)+1,j,ixtime) enddo write(6,"(' n=',i2,' j=',i2,' len=',i4,' ndexa(n+1)=',i4, + ' min,max=',2e12.4)") n,j,len,ndexa(n+1),fmin,fmax enddo end subroutine fgmnmx