#include "dims.h" ! subroutine putf(nj,j,itime,nf1,nf2) use cons_module,only: len1,len3,nflds_lab implicit none ! ! Define f(:,nj) from fg(:,:,j,itime) ! (f is taskcommon in fcom.h, fg is regular common in fgcom.h) ! (nj is shared, j is private) ! #include "params.h" #include "fcom.h" #include "fgcom.h" #include "index.h" ! ! Args: integer,intent(in) :: nj,j,itime,nf1,nf2 ! ! Locals: integer :: i,n,len,ixf,ixfg real :: fmin,fmax integer :: lens(nflds) ! if (nf1<1.or.nf2>nflds.or.nf1>nf2) then write(6,"('>>> putf: bad nf1 or nf2: nf1=',i3, + ' nf2=',i3)") nf1,nf2 stop 'putf' endif lens = len3 ! array op where(nflds_lab == 'NPHIH ') lens = len1 do n=nf1,nf2 ixf = ndexa(n+1)+nj ixfg = ndexa(n+1)+1 do i=1,lens(n) f(i,ixf) = fg(i,ixfg,j,itime) enddo enddo return end !----------------------------------------------------------------------- subroutine putfg(nj,j,itime,nf1,nf2) use cons_module,only: len1,len3,nflds_lab implicit none ! ! Define fg(:,:,j,itime) from f(:,nj) ! #include "params.h" #include "fcom.h" #include "fgcom.h" #include "index.h" ! ! Args: integer,intent(in) :: nj,j,itime,nf1,nf2 ! ! Locals: integer :: i,n,len,ixf,ixfg real :: fmin,fmax integer :: lens(nflds) ! ! nflds is number of fields for which 8 lat slices are carried in f(): ! (nflds=60 for unmodified tgcm21) ! ndexa(n+1) is the starting point for each field. ! if (nf1<1.or.nf2>nflds.or.nf1>nf2) then write(6,"('>>> putfg: bad nf1 or nf2: nf1=',i3, + ' nf2=',i3)") nf1,nf2 stop 'putf' endif lens = len3 ! array op where(nflds_lab == 'NPHIH ') lens = len1 do n=nf1,nf2 ixf = ndexa(n+1)+nj ixfg = ndexa(n+1)+1 do i=1,lens(n) fg(i,ixfg,j,itime) = f(i,ixf) enddo enddo ! n=1,nflds return end