#include "dims.h" SUBROUTINE FLOWV3(IHEM) use cons_module,only: imax implicit none ! ! Args: integer,intent(out) :: IHEM C **** C **** TRANSFORM TO AURORAL CIRCLE COORDINATES C **** #include "params.h" #include "cflowv3.h" #include "phys.h" real :: cosofa,sinofa,aslona,pi,pi2 COMMON /OVALPOS/ COSOFA(2),SINOFA(2),ASLONA(2),PI,PI2 real :: rlatm,rlonm,dipmag,decmag,sndec,csdec,sn2dec,sncsdc, | rlatmp,rlonmp,dlons COMMON/TRGM/RLATM(ZIMXP,ZJMX),RLONM(ZIMXP,ZJMX), 1 DIPMAG(ZIMXP,ZJMX),DECMAG(ZIMXP,ZJMX),SNDEC(ZIMXP,ZJMX), 2 CSDEC(ZIMXP,ZJMX),SN2DEC(ZIMXP,ZJMX),SNCSDC(ZIMXP,ZJMX), 3 RLATMP(ZJMX),RLONMP(ZJMX),DLONS(ZJMX) ! ! Local: real :: dlat(zimx),dlon(zimx),ratio(zimx) integer :: i,imaxd2,iflag(zimx) ! ! dlat,dlon, ratio, and iflag are local. ! rlatm, rlonm are in regular common /TRGM/ defined by magdyn.f ! (magdyn is called by main tgcm before advnce) ! dlons is also in /TRGM/ and is defined in sunloc.f ! (sunloc is called by advnce before main latitude loop) ! do i=1,imax dlat(i) = rlatm(i+2,j) dlon(i) = rlonm(i+2,j)-dlons(j) ratio(i) = 1. iflag(i) = 1 enddo C **** SET IHEM = 1,2 FOR S,N HEMISPHERE IMAXD2 = MAX0(1,IMAX/2) IHEM = IFIX(DLAT(IMAXD2)*2./3.1416 + 2.) C **** C **** TRANSFORM TO AURORAL CIRCLE CORDINATES C **** I.E. CALCULATE COLAT AND ALON FOR POLHT AND AURHT C **** ! ! Define colat and alon (taskcommon in cflowv3.h) for polht and aurht: ! DO 8 I=1,IMAX ! ! Define sin/cos lat/lon in taskcommon /CFLOWV3/ SINLAT(I)=SIN(ABS(DLAT(I))) COSLAT(I)=COS(DLAT(I)) SINLON(I) = SIN(DLON(I)+ASLONA(IHEM)) COSLON(I) = COS(DLON(I)+ASLONA(IHEM)) ! ! colat and alon also in /CFLOWV3/ COLAT(I) = COSOFA(IHEM)*SINLAT(I) - SINOFA(IHEM)*COSLAT(I)* 1 COSLON(I) COLAT(I) = ACOS(COLAT(I)) * SQRT(RATIO(I)) ALON(I) = AMOD(ATAN2(+SINLON(I)*COSLAT(I),SINLAT(I)* 1 SINOFA(IHEM)+COSOFA(IHEM)*COSLAT(I)*COSLON(I)) - 2 ASLONA(IHEM)+3.*PI,PI2) - PI 8 CONTINUE RETURN END C