#include "dims.h" SUBROUTINE HEELIS use input_module,only: aurora, iamie use cons_module,only: imax,imaxp2,len1,len3,jmax,dphi,pi implicit none C **** C **** GENERATE AURORAL CIRCLE FIELDS, UI, VI, WI C **** #include "params.h" #include "fcom.h" #include "vscr.h" #include "index.h" #include "buff.h" #include "phys.h" !#include "amie.h" C **** C **** DIMENSIONS FOR AMIE FIELDS OF POTENTIAL (KV) AND C **** UI,VI,WI (M/S) C **** NORTHERN HEMISPHERE ONLY --- 17.5 TO 87.5 DEG LATITUDE **** C **** ! ! Local: real :: WION(ZIMXP),userla integer :: nuik,nvik,nwik,i,jj,ishunk,ihem ! C **** CALCULATE UI AND VI C **** C **** SCALE UI AND VI FROM INPUT C **** NUIK=NUI NVIK=NVI NWIK=NWI DO 500 I=1,LEN3 F(I,NUIK)=100.*F(I,NUIK) F(I,NVIK)=100.*F(I,NVIK) F(I,NWIK)=100.*F(I,NWIK) 500 CONTINUE ! ! ! Aurora routines flowv3, polht, and aurht are called only when ! abs(latitude) <= 32.5 (also orora, called after heelis) ! (ISHUNK and USERLA are local) ! USERLA=(FLOAT(J-JMAX)-.5)*dphi+pi/2. ISHUNK=1 IF(aurora.EQ.0) ISHUNK=0 IF(ABS(USERLA).LT.pi/6.) ISHUNK=0 if (ishunk==1) then ! ! Amie not yet tested w/ multi-tasking. IF (IAMIE .EQ. 1) THEN ! write(6,"('heelis calling amiepa')") ! CALL AMIEPA (T2(3),T1(3),T4(3),T5(3),T6(3),T8(3),T3(3), ! | WION(3)) CALL AMIEPA (T2(3),T1(3),T4(3),T5(3),T6(3),T7(3), | T8(3),T9(3),T3(3),WION(3)) GO TO 499 ENDIF ! ! Call flowv3, polht, and aurht (flowxx, flowx0, flowv1, and flowv2 ! have been eliminated). ! Flowv3 defines taskcommon /cflowv3/, which is needed by ! polht and aurht. ! Flowv3 also defines ihem (local), which is passed to polht and aurht. ! call flowv3(IHEM) ! ! T5=CUSP, T6=ALFA, T8=FLUX, T3=DRIZL T7=ALFA2 T9=FLUX2 ! ! polht defines cusp in t5: ! cusp call polht(t5(3),imax,IHEM) ! ! aurht defines alfa,flux,drizl,alfa2,flux2: ! alfa flux drizl alfa2 flux2 call aurht(t6(3),t8(3),t3(3),t7(3),t9(3),imax,IHEM) ! 499 CONTINUE C **** INSERT PERIODIC POINTS DO 502 I=1,2 T3(I)=T3(I+IMAX) T5(I)=T5(I+IMAX) T6(I)=T6(I+IMAX) T7(I)=T7(I+IMAX) T8(I)=T8(I+IMAX) T9(I)=T9(I+IMAX) ! T3(I+IMAXP2)=T3(I+2) T5(I+IMAXP2)=T5(I+2) T6(I+IMAXP2)=T6(I+2) T7(I+IMAXP2)=T7(I+2) T8(I+IMAXP2)=T8(I+2) T9(I+IMAXP2)=T9(I+2) 502 CONTINUE ! write(6,"(/,'heelis after aurht: j=',i2)") j ! write(6,"('t3(DRIZL)=',/,(6e12.4))") t3 ! write(6,"('t5(CUSP)=',/,(6e12.4))") t5 ! write(6,"('t6(ALFA)=',/,(6e12.4))") t6 ! write(6,"('t7(ALFA2)=',/,(6e12.4))") t7 ! write(6,"('t8(FLUX)=',/,(6e12.4))") t8 ! write(6,"('t9(FLUX2)=',/,(6e12.4))") t9 ! ! ishunk==0 (abs(lat) < 32.5) else DO 26 I=1,LEN1 T3(I)=0. T5(I)=0. T6(I)=0. T7(I)=0. T8(I)=0. T9(I)=0. 26 CONTINUE ! ! End latitude >= 32.5 endif ! ishunk RETURN END C