New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 10957 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/BDY/bdytra.F90 – NEMO

Ignore:
Timestamp:
2019-05-10T12:26:38+02:00 (5 years ago)
Author:
davestorkey
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : BDY module (including some removal of redundant code). Tested in AMM12 and ORCA1 (not full SETTE test at this stage).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/BDY/bdytra.F90

    r10529 r10957  
    4040CONTAINS 
    4141 
    42    SUBROUTINE bdy_tra( kt ) 
     42   SUBROUTINE bdy_tra( kt, Kbb, pts, Kaa ) 
    4343      !!---------------------------------------------------------------------- 
    4444      !!                  ***  SUBROUTINE bdy_tra  *** 
     
    4747      !! 
    4848      !!---------------------------------------------------------------------- 
    49       INTEGER, INTENT(in) ::   kt   ! Main time step counter 
     49      INTEGER                                  , INTENT(in)    :: kt        ! Main time step counter 
     50      INTEGER                                  , INTENT(in)    :: Kbb, Kaa  ! time level indices 
     51      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts       ! tracer fields 
    5052      ! 
    51       INTEGER                        :: ib_bdy, jn, igrd   ! Loop indeces 
     53      INTEGER                        :: ib_bdy, jn, igrd   ! Loop indices 
    5254      TYPE(ztrabdy), DIMENSION(jpts) :: zdta               ! Temporary data structure 
    5355      !!---------------------------------------------------------------------- 
     
    6365            SELECT CASE( TRIM(cn_tra(ib_bdy)) ) 
    6466            CASE('none'        )   ;   CYCLE 
    65             CASE('frs'         )   ;   CALL bdy_frs ( idx_bdy(ib_bdy),                tsa(:,:,:,jn), zdta(jn)%tra ) 
    66             CASE('specified'   )   ;   CALL bdy_spe ( idx_bdy(ib_bdy),                tsa(:,:,:,jn), zdta(jn)%tra ) 
    67             CASE('neumann'     )   ;   CALL bdy_nmn ( idx_bdy(ib_bdy), igrd         , tsa(:,:,:,jn)               ) 
    68             CASE('orlanski'    )   ;   CALL bdy_orl ( idx_bdy(ib_bdy), tsb(:,:,:,jn), tsa(:,:,:,jn), zdta(jn)%tra, ll_npo=.false. ) 
    69             CASE('orlanski_npo')   ;   CALL bdy_orl ( idx_bdy(ib_bdy), tsb(:,:,:,jn), tsa(:,:,:,jn), zdta(jn)%tra, ll_npo=.true. ) 
    70             CASE('runoff'      )   ;   CALL bdy_rnf ( idx_bdy(ib_bdy),                tsa(:,:,:,jn),               jn ) 
     67            CASE('frs'         )   ;   CALL bdy_frs ( idx_bdy(ib_bdy),                pts(:,:,:,jn,Kaa), zdta(jn)%tra ) 
     68            CASE('specified'   )   ;   CALL bdy_spe ( idx_bdy(ib_bdy),                pts(:,:,:,jn,Kaa), zdta(jn)%tra ) 
     69            CASE('neumann'     )   ;   CALL bdy_nmn ( idx_bdy(ib_bdy), igrd         , pts(:,:,:,jn,Kaa)               ) 
     70            CASE('orlanski'    )   ;   CALL bdy_orl ( idx_bdy(ib_bdy), pts(:,:,:,jn,Kbb), pts(:,:,:,jn,Kaa), zdta(jn)%tra, ll_npo=.false. ) 
     71            CASE('orlanski_npo')   ;   CALL bdy_orl ( idx_bdy(ib_bdy), pts(:,:,:,jn,Kbb), pts(:,:,:,jn,Kaa), zdta(jn)%tra, ll_npo=.true. ) 
     72            CASE('runoff'      )   ;   CALL bdy_rnf ( idx_bdy(ib_bdy),                pts(:,:,:,jn,Kaa),               jn ) 
    7173            CASE DEFAULT           ;   CALL ctl_stop( 'bdy_tra : unrecognised option for open boundaries for T and S' ) 
    7274            END SELECT 
    7375            ! Boundary points should be updated 
    74             CALL lbc_bdy_lnk( 'bdytra', tsa(:,:,:,jn), 'T', 1., ib_bdy ) 
     76            CALL lbc_bdy_lnk( 'bdytra', pts(:,:,:,jn,Kaa), 'T', 1., ib_bdy ) 
    7577            !  
    7678         END DO 
     
    8082 
    8183 
    82    SUBROUTINE bdy_rnf( idx, pta, jpa ) 
     84   SUBROUTINE bdy_rnf( idx, pt, jpa ) 
    8385      !!---------------------------------------------------------------------- 
    8486      !!                 ***  SUBROUTINE bdy_rnf  *** 
     
    9092      !!---------------------------------------------------------------------- 
    9193      TYPE(OBC_INDEX),                     INTENT(in) ::   idx  ! OBC indices 
    92       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pta  ! tracer trend 
     94      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) ::   pt  ! tracer trend 
    9395      INTEGER,                             INTENT(in) ::   jpa  ! TRA index 
    9496      ! 
     
    105107            ip = bdytmask(ii+1,ij  ) - bdytmask(ii-1,ij  ) 
    106108            jp = bdytmask(ii  ,ij+1) - bdytmask(ii  ,ij-1) 
    107             if (jpa == jp_tem) pta(ii,ij,ik) = pta(ii+ip,ij+jp,ik) * tmask(ii,ij,ik) 
    108             if (jpa == jp_sal) pta(ii,ij,ik) =                 0.1 * tmask(ii,ij,ik) 
     109            if (jpa == jp_tem) pt(ii,ij,ik) = pt(ii+ip,ij+jp,ik) * tmask(ii,ij,ik) 
     110            if (jpa == jp_sal) pt(ii,ij,ik) =                 0.1 * tmask(ii,ij,ik) 
    109111         END DO 
    110112      END DO 
     
    113115 
    114116 
    115    SUBROUTINE bdy_tra_dmp( kt ) 
     117   SUBROUTINE bdy_tra_dmp( kt, Kbb, pts, Krhs ) 
    116118      !!---------------------------------------------------------------------- 
    117119      !!                 ***  SUBROUTINE bdy_tra_dmp  *** 
     
    120122      !!  
    121123      !!---------------------------------------------------------------------- 
    122       INTEGER, INTENT(in) ::   kt   ! 
     124      INTEGER                                  , INTENT(in)    :: kt        ! time step 
     125      INTEGER                                  , INTENT(in)    :: Kbb, Krhs ! time level indices 
     126      REAL(wp), DIMENSION(jpi,jpj,jpk,jpts,jpt), INTENT(inout) :: pts       ! active tracers and RHS of tracer equation 
    123127      ! 
    124128      REAL(wp) ::   zwgt           ! boundary weight 
     
    139143               zwgt = idx_bdy(ib_bdy)%nbd(ib,igrd) 
    140144               DO ik = 1, jpkm1 
    141                   zta = zwgt * ( dta_bdy(ib_bdy)%tem(ib,ik) - tsb(ii,ij,ik,jp_tem) ) * tmask(ii,ij,ik) 
    142                   zsa = zwgt * ( dta_bdy(ib_bdy)%sal(ib,ik) - tsb(ii,ij,ik,jp_sal) ) * tmask(ii,ij,ik) 
    143                   tsa(ii,ij,ik,jp_tem) = tsa(ii,ij,ik,jp_tem) + zta 
    144                   tsa(ii,ij,ik,jp_sal) = tsa(ii,ij,ik,jp_sal) + zsa 
     145                  zta = zwgt * ( dta_bdy(ib_bdy)%tem(ib,ik) - pts(ii,ij,ik,jp_tem,Kbb) ) * tmask(ii,ij,ik) 
     146                  zsa = zwgt * ( dta_bdy(ib_bdy)%sal(ib,ik) - pts(ii,ij,ik,jp_sal,Kbb) ) * tmask(ii,ij,ik) 
     147                  pts(ii,ij,ik,jp_tem,Krhs) = pts(ii,ij,ik,jp_tem,Krhs) + zta 
     148                  pts(ii,ij,ik,jp_sal,Krhs) = pts(ii,ij,ik,jp_sal,Krhs) + zsa 
    145149               END DO 
    146150            END DO 
Note: See TracChangeset for help on using the changeset viewer.