*ID VOLVAR
*/
*/  volvar_right is a corrected version of volvar, which was used in some 
*/    experiments at vn4.4.  An indexing error in volvar meant that the volcanic 
*/    effect was striped within each PE domain rather than with the intended 
*/    global variation.  This also implied different results according to PE 
*/    decomposition.
*/
*/  Mod volvar for 4.5 to pass an array of volcanic aerosol (not defined 
*/     herein - use Satoetal for the Sato & al (1993) timeseries) into 
*/     HadCM3 radiation code (which would otherwise be using a
*/     climatological amount of such aerosol, but which takes it as a
*/     mass loading, not optical depth).  One line-number change from 
*/     the 4.4 mod was needed - but more importantly, this one corrects
*/     the indexing which meant previous T3E volcano runs had been 
*/     multiply striped, i.e. the 4 numbers for the 4 quarterspheres 
*/     had been used 4 times *on each processor*.
*/  http://www_hc/~hadeb/fcgmenu.html has some discussion & I wrote
*/    a brief report on natural forcings of climate 12/97.             WJI
*/
*DECLARE RAD_CTL1
*/
*I RAD_CTL1.118
     &      VOLCMASS(P_FIELDDA),      ! VOLCTS expanded to full fields,
!     converted to mass loading & possibly multiplied by a fudge factor
*I RAD_CTL1.140
     &   I45N, IEQR, I45S,              ! Indices for rows at 45' & 0'.
*I RAD_CTL1.159
     &       MASCON,      ! Conversion factor from optical depth to mass
!                         !     - can also incorporate fudge factor !
*B ADB2F404.929
      PARAMETER ( MASCON =
     &    .0001 * 1.16898 / ( 6.09715E+03 + 4.60178E-04 ))
!     .0001 converts the numbers in the DATA statement to optical depth.
!     1.16898 converts .55 micron optical depth to the Slingo (1989) 
!     band-1 optical depth (from the HadCM2 mod) & then we divide by
!     the total k (scattering+absorption) from spec3a_sw_3_tknlaero
!     for bands 2 & 3.  (This may or may not be strictly correct - I
!     think the 1.16898 is legitimately for the old band 1 but it may 
!     have been derived for the new bands 2 & 3.)
!     A fudge factor of 1.5 or so could also be included here.
*I RAD_CTL1.330

CL  Expand aerosol optical depth time series to global field, ignoring 
CL    haloes, which aren't passed down:
C  datastart(2) (in comdeck PARVARS) gives the index in the global field
C     of the first non-halo row of this processor.

        I45N = glsize(2)/4   + 1 - datastart(2) + offy
        IEQR = glsize(2)/2   + 1 - datastart(2) + offy
        I45S = 3*glsize(2)/4 + 1 - datastart(2) + offy
C  The +1 in combination with the rounding of the INTEGER division
C     gives the right place, given there being one more row of data
C     on the first row of processors.
        DO ROW=1+offy, MIN(I45N,P_ROWS-offy)
          DO I=1, ROW_LENGTH
           VOLCMASS(I+(ROW-1)*ROW_LENGTH) =
     &                                 MASCON * VOLCTS(1,I_MONTH,I_YEAR)
          ENDDO
        ENDDO
        IF ( I45N .GE. offy .AND. I45N .LT. P_ROWS-offy ) THEN
          DO I=1, ROW_LENGTH
            VOLCMASS(I+I45N*ROW_LENGTH) = .5 * MASCON *
     &           ( VOLCTS(1,I_MONTH,I_YEAR) + VOLCTS(2,I_MONTH,I_YEAR) )
          ENDDO
        ENDIF
        DO ROW=MAX(1+offy,I45N+2), MIN(IEQR,P_ROWS-offy)
          DO I=1, ROW_LENGTH
           VOLCMASS(I+(ROW-1)*ROW_LENGTH) =
     &                                 MASCON * VOLCTS(2,I_MONTH,I_YEAR)
          ENDDO
        ENDDO
        IF ( IEQR .GE. offy .AND. IEQR .LT. P_ROWS-offy ) THEN
          DO I=1, ROW_LENGTH
            VOLCMASS(I+IEQR*ROW_LENGTH) = .5 * MASCON *
     &           ( VOLCTS(2,I_MONTH,I_YEAR) + VOLCTS(3,I_MONTH,I_YEAR) )
          ENDDO
        ENDIF
        DO ROW=MAX(1+offy,IEQR+2), MIN(I45S,P_ROWS-offy)
          DO I=1, ROW_LENGTH
           VOLCMASS(I+(ROW-1)*ROW_LENGTH) =
     &                                 MASCON * VOLCTS(3,I_MONTH,I_YEAR)
          ENDDO
        ENDDO
        IF ( I45S .GE. offy .AND. I45S .LT. P_ROWS-offy ) THEN
          DO I=1, ROW_LENGTH
            VOLCMASS(I+I45S*ROW_LENGTH) = .5 * MASCON *
     &           ( VOLCTS(3,I_MONTH,I_YEAR) + VOLCTS(4,I_MONTH,I_YEAR) )
          ENDDO
        ENDIF
        DO ROW=MAX(1+offy,I45S+2), P_ROWS-offy
          DO I=1, ROW_LENGTH
           VOLCMASS(I+(ROW-1)*ROW_LENGTH) =
     &                                 MASCON * VOLCTS(4,I_MONTH,I_YEAR)
          ENDDO
        ENDDO
*/
*/  The added argument has to share a line with an existing one, as the 
*/   code on the library has reached the limit of 99 continuation lines.
*D ADB2F404.994
     &        DISS_SULPHATE(FIRST_POINT_SULPC, 1),VOLCMASS(FIRST_POINT),
*I ADB2F404.1024
     &        VOLCMASS(FP_LOCAL(I)),
*/
*DECLARE LWRAD3A
*/
*I ADB2F404.635 
     &   , VOLCMASS
*I ADB1F401.516
     &   , VOLCMASS(NPD_FIELD)
!             Mass of stratospheric volcanic aerosol at each point
*I ADB1F402.516
     &      , VOLCMASS
*/
*DECLARE SWRAD3A
*/
*/
*I ADB2F404.1507
     &   , VOLCMASS
*I ADB1F401.1044
     &   , VOLCMASS(NPD_FIELD)
!             Mass of stratospheric volcanic aerosol at each point
*I ADB1F402.724
     &      , VOLCMASS 
*/
*DECLARE FILL3A
*/
*I ADB1F402.161
     &   , VOLCMASS
*I ADB1F402.200
     &   , VOLCMASS(NPD_FIELD)
!             Mass of stratospheric volcanic aerosol at each point 
!JME Pass the imposed volcanic aerosol down into the climatology
*I ADB2F404.261
     &      , VOLCMASS
*I ADB2F404.366
     &      , VOLCMASS
*I ADB2F404.414
     &   , VOLCMASS(NPD_FIELD)
!             Mass of stratospheric volcanic aerosol at each point
*D ADB2F404.461,462
!JME Replace N_AEROSOL with the hard-wired 5 of this climatology
!JME        IF ( I .LT. N_AEROSOL ) THEN 
            IF ( I .LT. 5 ) THEN 
!JME Add suffix _CLIM to aerosols.
               AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-TRINDX(LG),I) = 0.
             ELSE
               AEROSOL_MIX_RATIO_CLIM(L,NLEVS+1-TRINDX(LG),I) =
     &                                                VOLCMASS(LG) * G /
*I ADB2F404.464
            ENDIF
