*IF DEF,MPP,AND,DEF,OCEAN                                                  OSWAPDIA.2      
C *****************************COPYRIGHT******************************     OSWAPDIA.3      
C (c) CROWN COPYRIGHT 1997, METEOROLOGICAL OFFICE, All Rights Reserved.    OSWAPDIA.4      
C                                                                          OSWAPDIA.5      
C Use, duplication or disclosure of this code is subject to the            OSWAPDIA.6      
C restrictions as set forth in the contract.                               OSWAPDIA.7      
C                                                                          OSWAPDIA.8      
C                Meteorological Office                                     OSWAPDIA.9      
C                London Road                                               OSWAPDIA.10     
C                BRACKNELL                                                 OSWAPDIA.11     
C                Berkshire UK                                              OSWAPDIA.12     
C                RG12 2SZ                                                  OSWAPDIA.13     
C                                                                          OSWAPDIA.14     
C If no contract has been raised with this copy of the code, the use,      OSWAPDIA.15     
C duplication or disclosure of it is strictly prohibited.  Permission      OSWAPDIA.16     
C to do so must first be obtained in writing from the Head of Numerical    OSWAPDIA.17     
C Modelling at the above address.                                          OSWAPDIA.18     
C ******************************COPYRIGHT******************************    OSWAPDIA.19     

      SUBROUTINE OSWAPDIAGS(                                                1,84OSWAPDIA.20     
     & L_ICEFREEDR,L_ICESIMPLE,L_OHANEY,L_SEAICE,L_IHANEY,L_OBIOLOGY       ODC1F405.412    
     &,L_OQLARGE,L_OFULARGE,IMT,SWNCOL,JMT,JMTM1,KM,KMM1                   OOM1F405.715    
     &,O_EW_HALO,O_NS_HALO                                                 OSWAPDIA.23     
*CALL ARGOC3DG                                                             OSWAPDIA.24     
     &,UCURRENT,VCURRENT,CARYSALT,OCEANHEATFLUX                            OOM1F405.716    
     &,SFUTOT,SFVTOT                                                       OSWAPDIA.26     
     &,UTOT,VTOT                                                           OSWAPDIA.27     
     &,SF_ZN,SWZUN,SWZVN                                                   OSWAPDIA.28     
     &,sf201_30,sf202_30,sf203_30,sf204_30,sf205_30,sf208_30,sf248_30      OSWAPDIA.29     
     &,sf249_30,sf250_30,sf251_30                                          OSWAPDIA.30     
     &,SW201_30,SW202_30,SW203_30,SW204_30,SW205_30,SW208_30,SW248_30      OSWAPDIA.31     
     &,SW249_30,SW250_30,SW251_30                                          OSWAPDIA.32     
     &,sf_dt                                                               OSWAPDIA.33     
     &,DTXADV,DTYADV,DTZADV,DTXDIFF,DTYDIFF,DTZDIFF,DTSFC,DTPEN            OSWAPDIA.34     
     &,DTICE,DTMIX,DTCNVC,DTZ,DTFF,DTMED                                   OSWAPDIA.35     
     &,sf_DS                                                               OSWAPDIA.36     
     &,DSXADV,DSYADV,DSZADV,DSXDIFF,DSYDIFF,DSZDIFF,DSSFC,DSICE            OSWAPDIA.37     
     &,DSMIX,DSCNVC,DSZ,DSFF,DSMED                                         OSWAPDIA.38     
     &,sf_bio                                                              OSWAPDIA.39     
     &,PRIM_PROD,ZOO_PROD,PHYTO_GROW,PHYTO_GRAZE,PHYTO_MORT                OSWAPDIA.40     
     &,EXCRETE_NUT,GROW_NUT,PMORT_NUT,ZMORT_NUT                            OSWAPDIA.41     
     &,PRESP_NUT,REMIN_NUT,NUT_LIMIT,LIGHT_LIMIT,TEMP_LIMIT,DETRI_FLUX     OSWAPDIA.42     
     &,NUT_FLUX,HADV_NUT,VADV_NUT,HDIF_NUT,VDIF_NUT,MIX_NUT,CNVC_NUT       OSWAPDIA.43     
     &,BIO_NUT,FIX_NUT,HADV_PHY,HADV_ZOO,HADV_DET                          OSWAPDIA.44     
     &)                                                                    OSWAPDIA.45     
                                                                           OSWAPDIA.46     
!                                                                          OSWAPDIA.47     
! Description: This subroutine handles the calls to swapbounds             OSWAPDIA.48     
!              for diagnostics which would otherwise be performed          OSWAPDIA.49     
!              in ROWCALC. The main purpose of this routine is to          OSWAPDIA.50     
!              minimise and modularise ROWCALC.                            OSWAPDIA.51     
!                                                                          OSWAPDIA.52     
! Author:      R. Hill                                                     OSWAPDIA.53     
!                                                                          OSWAPDIA.54     
! Date:        September 1997                                              OSWAPDIA.55     
!                                                                          OSWAPDIA.56     
! Modification History                                                     OSWAPDIA.57     
!                                                                          OSWAPDIA.58     
! Date     Name        Description                                         OSWAPDIA.59     
! ------   ----------  ------------------------------------------          OSWAPDIA.60     
!                                                                          OSWAPDIA.61     
!###################################################################       OSWAPDIA.62     
                                                                           OSWAPDIA.63     
      IMPLICIT NONE                                                        OSWAPDIA.64     
                                                                           OSWAPDIA.65     
!-------------------------------------------------------------------       OSWAPDIA.66     
! Incoming variables: IN only.                                             OSWAPDIA.67     
!-------------------------------------------------------------------       OSWAPDIA.68     
      LOGICAL L_ICEFREEDR,L_ICESIMPLE,L_OHANEY,L_IHANEY,                   ODC1F405.413    
     & L_SEAICE,L_OBIOLOGY                                                 ODC1F405.414    
     &       ,L_OQLARGE,L_OFULARGE,SFUTOT,SFVTOT,SF_ZN(2)                  OOM1F405.717    
     &       ,sf201_30,sf202_30,sf203_30,sf204_30,sf205_30,sf208_30        OSWAPDIA.71     
     &       ,sf248_30,sf249_30,sf250_30,sf251_30                          OSWAPDIA.72     
     &       ,sf_dt(*),sf_ds(*),sf_bio(*)                                  OSWAPDIA.73     
                                                                           OSWAPDIA.74     
      INTEGER IMT                                                          OSWAPDIA.75     
     &       ,SWNCOL                                                       OSWAPDIA.76     
     &       ,JMT                                                          OSWAPDIA.77     
     &       ,JMTM1                                                        OSWAPDIA.78     
     &       ,KM                                                           OSWAPDIA.79     
     &       ,KMM1                                                         OSWAPDIA.80     
     &       ,O_EW_HALO,O_NS_HALO                                          OSWAPDIA.81     
*CALL OARRYSIZ                                                             OSWAPDIA.82     
                                                                           OSWAPDIA.83     
!-----------------------------------------------------------------------   OSWAPDIA.84     
! All real arrays are of IN/OUT type.                                      OSWAPDIA.85     
!-----------------------------------------------------------------------   OSWAPDIA.86     
*CALL TYPOC3DG                                                             OSWAPDIA.87     
                                                                           OSWAPDIA.88     
      REAL CARYSALT(IMT,JMT),OCEANHEATFLUX(IMT,JMT)                        OOM1F405.718    
      REAL UCURRENT(IMT_drsa,JMTM1_drsa),                                  ODC1F405.415    
     & VCURRENT(IMT_drsa,JMTM1_drsa)                                       ODC1F405.416    
     &,UTOT(imt_stash,jmt,km),VTOT(imt_stash,jmt,km)                       OSWAPDIA.90     
     &,SWZUN(SWNCOL_CLN,JMT_CLN),SWZVN(SWNCOL_CLN,JMT_CLN)                 OSWAPDIA.91     
     &,sw201_30(SWNCOL,JMT,KMM1) ! stash workspace for vertical velocity   OSWAPDIA.92     
     &,sw202_30(SWNCOL,JMT)      ! mixed layer depth                       OSWAPDIA.93     
     &,sw203_30(SWNCOL,JMT)      ! anomalous heat flux                     OSWAPDIA.94     
     &,sw204_30(SWNCOL,JMT)      ! anomalous water flux                    OSWAPDIA.95     
     &,sw205_30(SWNCOL,JMT)      ! anomalous sea ice heat flux             OSWAPDIA.96     
     &,sw208_30(SWNCOL,JMT)      ! caryheat heat flux (W/m2)               OSWAPDIA.97     
     &,sw248_30(ICOL_CYC,JMT)    ! stash workspace for PCO2                OSWAPDIA.98     
     &,sw249_30(ICOL_CYC,JMT)    ! stash workspace for CO2 flux            OSWAPDIA.99     
     &,sw250_30(ICOL_CYC,JMT)    ! stash workspace for invasion            OSWAPDIA.100    
     &,sw251_30(ICOL_CYC,JMT)    ! stash workspace for evasion             OSWAPDIA.101    
     &,DTXADV(*),DTYADV(*),DTZADV(*),DTXDIFF(*),DTYDIFF(*),DTZDIFF(*)      OSWAPDIA.102    
     &,DTSFC(*),DTPEN(*),DTICE(*),DTMIX(*),DTCNVC(*),DTZ(*),DTFF(*)        OSWAPDIA.103    
     &,DTMED(*)                                                            OSWAPDIA.104    
     &,DSXADV(*),DSYADV(*),DSZADV(*),DSXDIFF(*),DSYDIFF(*),DSZDIFF(*)      OSWAPDIA.105    
     &,DSSFC(*),DSICE(*),DSMIX(*),DSCNVC(*),DSZ(*),DSFF(*),DSMED(*)        OSWAPDIA.106    
                                                                           OSWAPDIA.107    
!====================================================================      OSWAPDIA.108    
!   BIOLOGY DIAGNOSTICS                                                    OSWAPDIA.109    
!====================================================================      OSWAPDIA.110    
!   Integrated production                                                  OSWAPDIA.111    
      REAL PRIM_PROD(SWNCOL_BIO,JMT_BIO) ! Primary production (gross)      OSWAPDIA.112    
!                             ! (gC/m2/day) -Integrated over top 200m      OSWAPDIA.113    
      REAL ZOO_PROD(SWNCOL_BIO,JMT_BIO)  ! Zooplankton                     OSWAPDIA.114    
!       ! production (gross) Totalled over top 200m (gC/m2/day)            OSWAPDIA.115    
!  Growth limitation terms                                                 OSWAPDIA.116    
      REAL NUT_LIMIT(SWNCOL_BIO,JMT_BIO,KM_BIO)  ! Phytoplnktn growth      OSWAPDIA.117    
      REAL LIGHT_LIMIT(SWNCOL_BIO,JMT_BIO,KM_BIO) ! limitation terms       OSWAPDIA.118    
      REAL TEMP_LIMIT(SWNCOL_BIO,JMT_BIO,KM_BIO)                           OSWAPDIA.119    
                                                                           OSWAPDIA.120    
!  Phyto specific rates                                                    OSWAPDIA.121    
      REAL PHYTO_GROW (SWNCOL_BIO,JMT_BIO,KM_BIO) ! Phyto growth           OSWAPDIA.122    
!                                                 ! specific rate          OSWAPDIA.123    
      REAL PHYTO_GRAZE(SWNCOL_BIO,JMT_BIO,KM_BIO) ! Phyto grazing          OSWAPDIA.124    
!                                                 ! specific rate          OSWAPDIA.125    
      REAL PHYTO_MORT (SWNCOL_BIO,JMT_BIO,KM_BIO) ! Phyto mortality        OSWAPDIA.126    
     &                                            ! spec. rate             OSWAPDIA.127    
!                                     ! Specific rates in (day)-1          OSWAPDIA.128    
!  Detrital sinking                                                        OSWAPDIA.129    
      REAL DETRI_FLUX (SWNCOL_BIO,JMT_BIO,KM_BIO) ! Detrital sinking       OSWAPDIA.130    
                                      ! flux through                       OSWAPDIA.131    
                                      ! base of layer (mMol-N/m2/day).     OSWAPDIA.132    
                                                                           OSWAPDIA.133    
! Terms in Nitrate balance (all in units mMol-N/m3/day)                    OSWAPDIA.134    
      REAL EXCRETE_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)                          OSWAPDIA.135    
!                               ! Nutrient excretion rate                  OSWAPDIA.136    
     &    ,GROW_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)                             OSWAPDIA.137    
!                               ! Loss rate of N due to phyto              OSWAPDIA.138    
     &    ,PMORT_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)                            OSWAPDIA.139    
!                               ! Gain due to phyto death                  OSWAPDIA.140    
     &    ,ZMORT_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)                            OSWAPDIA.141    
!                               ! Gain due to zoo death                    OSWAPDIA.142    
     &    ,PRESP_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)                            OSWAPDIA.143    
!                               ! Gain due to phyto resp                   OSWAPDIA.144    
     &    ,REMIN_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)                            OSWAPDIA.145    
                                ! Gain due to detrtus remin.               OSWAPDIA.146    
     &    ,NUT_FLUX(SWNCOL_BIO,JMT_BIO,KM_BIO)                             OSWAPDIA.147    
                                                                           OSWAPDIA.148    
!  Rate of change of Nitrate due to physical processes                     OSWAPDIA.149    
!  (units: mMols-N/m3/day)                                                 OSWAPDIA.150    
      REAL HADV_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)  ! Horizontal advection     OSWAPDIA.151    
     &    ,VADV_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)  ! Vertical advection       OSWAPDIA.152    
     &    ,HDIF_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)  ! Horizontal diffusion     OSWAPDIA.153    
     &    ,VDIF_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)  ! Vertical diffusion       OSWAPDIA.154    
     &    ,MIX_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)   ! Mixed layer model        OSWAPDIA.155    
     &    ,CNVC_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)  ! Convection               OSWAPDIA.156    
     &    ,BIO_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)   ! BIOLOGICL MODEL (net)    OSWAPDIA.157    
     &    ,FIX_NUT(SWNCOL_BIO,JMT_BIO,KM_BIO)                              OSWAPDIA.158    
                                ! Reset of Nitrates from neg. values       OSWAPDIA.159    
                                                                           OSWAPDIA.160    
!  Rate of change of Phyto,Zoo & Detritus due to horiz advection           OSWAPDIA.161    
!  (units: mMols-N/m3/day)                                                 OSWAPDIA.162    
      REAL HADV_PHY(SWNCOL_BIO,JMT_BIO,KM_BIO)                             OSWAPDIA.163    
     &    ,HADV_ZOO(SWNCOL_BIO,JMT_BIO,KM_BIO)                             OSWAPDIA.164    
     &    ,HADV_DET(SWNCOL_BIO,JMT_BIO,KM_BIO)                             OSWAPDIA.165    
                                                                           OSWAPDIA.166    
                                                                           OSWAPDIA.167    
!---------------------------------------------------------------           OSWAPDIA.168    
!   Test each logical in turn and swap halos as required                   OSWAPDIA.169    
!---------------------------------------------------------------           OSWAPDIA.170    
                                                                           OSWAPDIA.171    
      IF (SF_GNUM) THEN                                                    OOM1F405.719    
      CALL SWAPBOUNDS(GNUM_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KMM1)     OOM1F405.720    
      ENDIF                                                                OOM1F405.721    
      IF (SF_GNUT) THEN                                                    OOM1F405.722    
      CALL SWAPBOUNDS(GNUT_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KMM1)     OOM1F405.723    
      ENDIF                                                                OOM1F405.724    
      IF (SF_RIM) THEN                                                     OOM1F405.725    
      CALL SWAPBOUNDS(RIM_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KMM1)      OOM1F405.726    
      ENDIF                                                                OOM1F405.727    
      IF (SF_RIT) THEN                                                     OOM1F405.728    
      CALL SWAPBOUNDS(RIT_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KMM1)      OOM1F405.729    
      ENDIF                                                                OOM1F405.730    
C                                                                          OOM1F405.731    
      IF(L_OQLARGE.OR.L_OFULARGE)THEN                                      OOM1F405.732    
      IF (SF_HM) THEN                                                      OOM1F405.733    
      CALL SWAPBOUNDS(HM_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)          OOM1F405.734    
      ENDIF                                                                OOM1F405.735    
      IF (SF_HT) THEN                                                      OOM1F405.736    
      CALL SWAPBOUNDS(HT_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)          OOM1F405.737    
      ENDIF                                                                OOM1F405.738    
      ENDIF      ! L_OQLARGE or L_OFULARGE                                 OOM1F405.739    
C                                                                          OOM1F405.740    
      CALL SWAPBOUNDS(CARYSALT,IMT,JMT,O_EW_HALO,O_NS_HALO,1)              OOM1F405.741    
      CALL SWAPBOUNDS(OCEANHEATFLUX,IMT,JMT,O_EW_HALO,O_NS_HALO,1)         OOM1F405.742    
                                                                           OSWAPDIA.172    
      IF (L_ICEFREEDR.OR.L_ICESIMPLE) THEN                                 ODC1F405.417    
                                                                           OSWAPDIA.174    
         CALL SWAPBOUNDS(UCURRENT,IMT,JMTM1,O_EW_HALO,O_NS_HALO,1)         OSWAPDIA.175    
         CALL SWAPBOUNDS(VCURRENT,IMT,JMTM1,O_EW_HALO,O_NS_HALO,1)         OSWAPDIA.176    
                                                                           OSWAPDIA.177    
      ENDIF                                                                OSWAPDIA.178    
                                                                           OSWAPDIA.179    
      IF (SFUTOT) THEN                                                     OSWAPDIA.180    
        CALL SWAPBOUNDS(UTOT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.181    
      ENDIF                                                                OSWAPDIA.182    
                                                                           OSWAPDIA.183    
      IF (SFVTOT) THEN                                                     OSWAPDIA.184    
        CALL SWAPBOUNDS(VTOT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.185    
      ENDIF                                                                OSWAPDIA.186    
                                                                           OSWAPDIA.187    
      IF (SF_ZN(1)) THEN                                                   OSWAPDIA.188    
          CALL SWAPBOUNDS(SWZUN,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,1)          OSWAPDIA.189    
      ENDIF                                                                OSWAPDIA.190    
                                                                           OSWAPDIA.191    
      IF (SF_ZN(2)) THEN                                                   OSWAPDIA.192    
          CALL SWAPBOUNDS(SWZVN,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,1)          OSWAPDIA.193    
      ENDIF                                                                OSWAPDIA.194    
                                                                           OSWAPDIA.195    
                                                                           OSWAPDIA.196    
      IF (SF_UISOP) THEN                                                   OSWAPDIA.197    
        CALL SWAPBOUNDS(UISOP_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KM)    OSWAPDIA.198    
      ENDIF                                                                OSWAPDIA.199    
                                                                           OSWAPDIA.200    
      IF (SF_VISOP) THEN                                                   OSWAPDIA.201    
       CALL SWAPBOUNDS(VISOPN_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KM)    OSWAPDIA.202    
      ENDIF                                                                OSWAPDIA.203    
                                                                           OSWAPDIA.204    
      IF (SF_WISOP) THEN                                                   OSWAPDIA.205    
        CALL SWAPBOUNDS                                                    OSWAPDIA.206    
     &       (WISOP_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KMM1)            OSWAPDIA.207    
      ENDIF                                                                OSWAPDIA.208    
                                                                           OSWAPDIA.209    
      IF (SF_DTGM) THEN                                                    OSWAPDIA.210    
        CALL SWAPBOUNDS(DTGM_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KM)     OSWAPDIA.211    
      ENDIF                                                                OSWAPDIA.212    
                                                                           OSWAPDIA.213    
      IF (SFRC) THEN                                                       OSWAPDIA.214    
        CALL SWAPBOUNDS(DTRC,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.215    
      ENDIF                                                                OSWAPDIA.216    
                                                                           OSWAPDIA.217    
      IF (sf201_30) THEN                                                   OSWAPDIA.218    
        CALL SWAPBOUNDS(SW201_30,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KMM1)      OSWAPDIA.219    
      ENDIF                                                                OSWAPDIA.220    
                                                                           OSWAPDIA.221    
      IF (sf202_30) THEN                                                   OSWAPDIA.222    
        CALL SWAPBOUNDS(SW202_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)      OSWAPDIA.223    
      ENDIF                                                                OSWAPDIA.224    
                                                                           OSWAPDIA.225    
      IF (L_OHANEY) THEN                                                   OSWAPDIA.226    
                                                                           OSWAPDIA.227    
        IF (sf203_30) THEN                                                 OSWAPDIA.228    
          CALL SWAPBOUNDS(SW203_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)    OSWAPDIA.229    
        ENDIF                                                              OSWAPDIA.230    
                                                                           OSWAPDIA.231    
        IF (sf204_30) THEN                                                 OSWAPDIA.232    
          CALL SWAPBOUNDS(SW204_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)    OSWAPDIA.233    
        ENDIF                                                              OSWAPDIA.234    
      ENDIF                                                                OSWAPDIA.235    
                                                                           OSWAPDIA.236    
      IF (L_SEAICE) THEN                                                   OSWAPDIA.237    
                                                                           OSWAPDIA.238    
        IF (L_IHANEY) THEN                                                 OSWAPDIA.239    
                                                                           OSWAPDIA.240    
         IF (sf205_30) THEN                                                OSWAPDIA.241    
          CALL SWAPBOUNDS(SW205_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)    OSWAPDIA.242    
         ENDIF                                                             OSWAPDIA.243    
                                                                           OSWAPDIA.244    
        ENDIF                                                              OSWAPDIA.245    
                                                                           OSWAPDIA.246    
        IF (sf208_30) THEN                                                 OSWAPDIA.247    
         CALL SWAPBOUNDS(SW208_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)     OSWAPDIA.248    
        ENDIF                                                              OSWAPDIA.249    
                                                                           OSWAPDIA.250    
      ENDIF                                                                OSWAPDIA.251    
                                                                           OSWAPDIA.252    
      IF (sf248_30) THEN                                                   OSWAPDIA.253    
         CALL SWAPBOUNDS(SW248_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)     OSWAPDIA.254    
      ENDIF                                                                OSWAPDIA.255    
                                                                           OSWAPDIA.256    
      IF (sf249_30) THEN                                                   OSWAPDIA.257    
         CALL SWAPBOUNDS(SW249_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)     OSWAPDIA.258    
      ENDIF                                                                OSWAPDIA.259    
                                                                           OSWAPDIA.260    
      IF (sf250_30) THEN                                                   OSWAPDIA.261    
         CALL SWAPBOUNDS(SW250_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)     OSWAPDIA.262    
      ENDIF                                                                OSWAPDIA.263    
                                                                           OSWAPDIA.264    
      IF (sf251_30) THEN                                                   OSWAPDIA.265    
         CALL SWAPBOUNDS(SW251_30,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,1)     OSWAPDIA.266    
      ENDIF                                                                OSWAPDIA.267    
                                                                           OSWAPDIA.268    
      IF (sf_dt(1)) THEN                                                   OSWAPDIA.269    
         CALL SWAPBOUNDS(DTXADV,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.270    
      ENDIF                                                                OSWAPDIA.271    
      IF (sf_dt(2)) THEN                                                   OSWAPDIA.272    
         CALL SWAPBOUNDS(DTYADV,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.273    
      ENDIF                                                                OSWAPDIA.274    
      IF (sf_dt(3)) THEN                                                   OSWAPDIA.275    
         CALL SWAPBOUNDS(DTZADV,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.276    
      ENDIF                                                                OSWAPDIA.277    
      IF (sf_dt(4)) THEN                                                   OSWAPDIA.278    
         CALL SWAPBOUNDS(DTXDIFF,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.279    
      ENDIF                                                                OSWAPDIA.280    
      IF (sf_dt(5)) THEN                                                   OSWAPDIA.281    
         CALL SWAPBOUNDS(DTYDIFF,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.282    
      ENDIF                                                                OSWAPDIA.283    
      IF (sf_dt(6)) THEN                                                   OSWAPDIA.284    
         CALL SWAPBOUNDS(DTZDIFF,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.285    
      ENDIF                                                                OSWAPDIA.286    
      IF (sf_dt(7)) THEN                                                   OSWAPDIA.287    
         CALL SWAPBOUNDS(DTSFC,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.288    
      ENDIF                                                                OSWAPDIA.289    
      IF (sf_dt(8)) THEN                                                   OSWAPDIA.290    
         CALL SWAPBOUNDS(DTPEN,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.291    
      ENDIF                                                                OSWAPDIA.292    
      IF (sf_dt(9)) THEN                                                   OSWAPDIA.293    
         CALL SWAPBOUNDS(DTICE,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.294    
      ENDIF                                                                OSWAPDIA.295    
      IF (sf_dt(10)) THEN                                                  OSWAPDIA.296    
         CALL SWAPBOUNDS(DTMIX,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.297    
      ENDIF                                                                OSWAPDIA.298    
      IF (sf_dt(11)) THEN                                                  OSWAPDIA.299    
         CALL SWAPBOUNDS(DTCNVC,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.300    
      ENDIF                                                                OSWAPDIA.301    
      IF (sf_dt(12)) THEN                                                  OSWAPDIA.302    
         CALL SWAPBOUNDS(DTZ,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)            OSWAPDIA.303    
      ENDIF                                                                OSWAPDIA.304    
      IF (sf_dt(13)) THEN                                                  OSWAPDIA.305    
         CALL SWAPBOUNDS(DTFF,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)           OSWAPDIA.306    
      ENDIF                                                                OSWAPDIA.307    
                                                                           OSWAPDIA.308    
                                                                           OSWAPDIA.309    
      IF (sf_dt(15)) THEN                                                  OSWAPDIA.310    
         CALL SWAPBOUNDS(DTMED,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.311    
      ENDIF                                                                OSWAPDIA.312    
                                                                           OSWAPDIA.313    
                                                                           OSWAPDIA.314    
                                                                           OSWAPDIA.315    
      IF (sf_DS(1)) THEN                                                   OSWAPDIA.316    
         CALL SWAPBOUNDS(DSXADV,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.317    
      ENDIF                                                                OSWAPDIA.318    
      IF (sf_DS(2)) THEN                                                   OSWAPDIA.319    
         CALL SWAPBOUNDS(DSYADV,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.320    
      ENDIF                                                                OSWAPDIA.321    
      IF (sf_DS(3)) THEN                                                   OSWAPDIA.322    
         CALL SWAPBOUNDS(DSZADV,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.323    
      ENDIF                                                                OSWAPDIA.324    
      IF (sf_DS(4)) THEN                                                   OSWAPDIA.325    
         CALL SWAPBOUNDS(DSXDIFF,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.326    
      ENDIF                                                                OSWAPDIA.327    
      IF (sf_DS(5)) THEN                                                   OSWAPDIA.328    
         CALL SWAPBOUNDS(DSYDIFF,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.329    
      ENDIF                                                                OSWAPDIA.330    
      IF (sf_DS(6)) THEN                                                   OSWAPDIA.331    
         CALL SWAPBOUNDS(DSZDIFF,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.332    
      ENDIF                                                                OSWAPDIA.333    
      IF (sf_DS(7)) THEN                                                   OSWAPDIA.334    
         CALL SWAPBOUNDS(DSSFC,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.335    
      ENDIF                                                                OSWAPDIA.336    
      IF (sf_DS(8)) THEN                                                   OSWAPDIA.337    
         CALL SWAPBOUNDS(DSICE,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.338    
      ENDIF                                                                OSWAPDIA.339    
      IF (sf_DS(9)) THEN                                                   OSWAPDIA.340    
         CALL SWAPBOUNDS(DSMIX,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.341    
      ENDIF                                                                OSWAPDIA.342    
      IF (sf_DS(10)) THEN                                                  OSWAPDIA.343    
         CALL SWAPBOUNDS(DSCNVC,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)         OSWAPDIA.344    
      ENDIF                                                                OSWAPDIA.345    
      IF (sf_DS(11)) THEN                                                  OSWAPDIA.346    
         CALL SWAPBOUNDS(DSZ,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)            OSWAPDIA.347    
      ENDIF                                                                OSWAPDIA.348    
      IF (sf_DS(12)) THEN                                                  OSWAPDIA.349    
         CALL SWAPBOUNDS(DSFF,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)           OSWAPDIA.350    
      ENDIF                                                                OSWAPDIA.351    
                                                                           OSWAPDIA.352    
      IF (sf_DS(14)) THEN                                                  OSWAPDIA.353    
         CALL SWAPBOUNDS(DSMED,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)          OSWAPDIA.354    
      ENDIF                                                                OSWAPDIA.355    
                                                                           OSWAPDIA.356    
      IF (SF_DSGM) THEN                                                    OSWAPDIA.357    
         CALL SWAPBOUNDS(DSGM_OUT,IMT_STASH,JMT,O_EW_HALO,O_NS_HALO,KM)    OSWAPDIA.358    
      ENDIF                                                                OSWAPDIA.359    
                                                                           OSWAPDIA.360    
      ! BIOLOGY related diagnostics:                                       OSWAPDIA.361    
      IF (L_OBIOLOGY) THEN                                                 OSWAPDIA.362    
        IF (sf_bio(1)) THEN                                                OSWAPDIA.363    
         CALL SWAPBOUNDS(PRIM_PROD,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,1)       OSWAPDIA.364    
        ENDIF                                                              OSWAPDIA.365    
        IF (sf_bio(2)) THEN                                                OSWAPDIA.366    
         CALL SWAPBOUNDS(ZOO_PROD,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,1)        OSWAPDIA.367    
        ENDIF                                                              OSWAPDIA.368    
        IF (sf_bio(3)) THEN                                                OSWAPDIA.369    
         CALL SWAPBOUNDS(PHYTO_GROW,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)     OSWAPDIA.370    
        ENDIF                                                              OSWAPDIA.371    
        IF (sf_bio(4)) THEN                                                OSWAPDIA.372    
         CALL SWAPBOUNDS(PHYTO_GRAZE,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)    OSWAPDIA.373    
        ENDIF                                                              OSWAPDIA.374    
        IF (sf_bio(5)) THEN                                                OSWAPDIA.375    
         CALL SWAPBOUNDS(PHYTO_MORT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)     OSWAPDIA.376    
        ENDIF                                                              OSWAPDIA.377    
        IF (sf_bio(6)) THEN                                                OSWAPDIA.378    
         CALL SWAPBOUNDS(EXCRETE_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)    OSWAPDIA.379    
        ENDIF                                                              OSWAPDIA.380    
        IF (sf_bio(7)) THEN                                                OSWAPDIA.381    
         CALL SWAPBOUNDS(GROW_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)       OSWAPDIA.382    
        ENDIF                                                              OSWAPDIA.383    
        IF (sf_bio(8)) THEN                                                OSWAPDIA.384    
         CALL SWAPBOUNDS(PMORT_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)      OSWAPDIA.385    
        ENDIF                                                              OSWAPDIA.386    
        IF (sf_bio(9)) THEN                                                OSWAPDIA.387    
         CALL SWAPBOUNDS(ZMORT_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)      OSWAPDIA.388    
        ENDIF                                                              OSWAPDIA.389    
        IF (sf_bio(10)) THEN                                               OSWAPDIA.390    
         CALL SWAPBOUNDS(PRESP_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)      OSWAPDIA.391    
        ENDIF                                                              OSWAPDIA.392    
        IF (sf_bio(11)) THEN                                               OSWAPDIA.393    
         CALL SWAPBOUNDS(REMIN_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)      OSWAPDIA.394    
        ENDIF                                                              OSWAPDIA.395    
        IF (sf_bio(12)) THEN                                               OSWAPDIA.396    
         CALL SWAPBOUNDS(NUT_LIMIT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)      OSWAPDIA.397    
        ENDIF                                                              OSWAPDIA.398    
        IF (sf_bio(13)) THEN                                               OSWAPDIA.399    
         CALL SWAPBOUNDS(LIGHT_LIMIT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)    OSWAPDIA.400    
        ENDIF                                                              OSWAPDIA.401    
        IF (sf_bio(14)) THEN                                               OSWAPDIA.402    
         CALL SWAPBOUNDS(TEMP_LIMIT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)     OSWAPDIA.403    
        ENDIF                                                              OSWAPDIA.404    
        IF (sf_bio(15)) THEN                                               OSWAPDIA.405    
         CALL SWAPBOUNDS(DETRI_FLUX,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)     OSWAPDIA.406    
        ENDIF                                                              OSWAPDIA.407    
        IF (sf_bio(16)) THEN                                               OSWAPDIA.408    
         CALL SWAPBOUNDS(NUT_FLUX,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)       OSWAPDIA.409    
        ENDIF                                                              OSWAPDIA.410    
        IF (sf_bio(17)) THEN                                               OSWAPDIA.411    
         CALL SWAPBOUNDS(HADV_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)       OSWAPDIA.412    
        ENDIF                                                              OSWAPDIA.413    
        IF (sf_bio(18)) THEN                                               OSWAPDIA.414    
         CALL SWAPBOUNDS(VADV_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)       OSWAPDIA.415    
        ENDIF                                                              OSWAPDIA.416    
        IF (sf_bio(19)) THEN                                               OSWAPDIA.417    
         CALL SWAPBOUNDS(HD  IF_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)     OSWAPDIA.418    
        ENDIF                                                              OSWAPDIA.419    
        IF (sf_bio(20)) THEN                                               OSWAPDIA.420    
         CALL SWAPBOUNDS(VD  IF_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)     OSWAPDIA.421    
        ENDIF                                                              OSWAPDIA.422    
        IF (sf_bio(21)) THEN                                               OSWAPDIA.423    
         CALL SWAPBOUNDS(MIX_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.424    
        ENDIF                                                              OSWAPDIA.425    
        IF (sf_bio(22)) THEN                                               OSWAPDIA.426    
         CALL SWAPBOUNDS(CNVC_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)       OSWAPDIA.427    
        ENDIF                                                              OSWAPDIA.428    
        IF (sf_bio(23)) THEN                                               OSWAPDIA.429    
         CALL SWAPBOUNDS(BIO_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.430    
        ENDIF                                                              OSWAPDIA.431    
        IF (sf_bio(24)) THEN                                               OSWAPDIA.432    
         CALL SWAPBOUNDS(FIX_NUT,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)        OSWAPDIA.433    
        ENDIF                                                              OSWAPDIA.434    
        IF (sf_bio(25)) THEN                                               OSWAPDIA.435    
         CALL SWAPBOUNDS(HADV_PHY,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)       OSWAPDIA.436    
        ENDIF                                                              OSWAPDIA.437    
        IF (sf_bio(26)) THEN                                               OSWAPDIA.438    
         CALL SWAPBOUNDS(HADV_ZOO,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)       OSWAPDIA.439    
        ENDIF                                                              OSWAPDIA.440    
        IF (sf_bio(27)) THEN                                               OSWAPDIA.441    
         CALL SWAPBOUNDS(HADV_DET,SWNCOL,JMT,O_EW_HALO,O_NS_HALO,KM)       OSWAPDIA.442    
        ENDIF                                                              OSWAPDIA.443    
      ENDIF                                                                OSWAPDIA.444    
                                                                           OSWAPDIA.445    
      RETURN                                                               OSWAPDIA.446    
                                                                           OSWAPDIA.447    
      END                                                                  OSWAPDIA.448    
*ENDIF                                                                     OSWAPDIA.449