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 11949 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/SBC/sbcssm.F90 – NEMO

Ignore:
Timestamp:
2019-11-22T15:29:17+01:00 (4 years ago)
Author:
acc
Message:

Merge in changes from 2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps. This just creates a fresh copy of this branch to use as the merge base. See ticket #2341

Location:
NEMO/branches/2019/dev_r11943_MERGE_2019/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src

    • Property svn:mergeinfo deleted
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/SBC/sbcssm.F90

    r10425 r11949  
    3939CONTAINS 
    4040 
    41    SUBROUTINE sbc_ssm( kt ) 
     41   SUBROUTINE sbc_ssm( kt, Kbb, Kmm ) 
    4242      !!--------------------------------------------------------------------- 
    4343      !!                     ***  ROUTINE sbc_oce  *** 
     
    5353      !!--------------------------------------------------------------------- 
    5454      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     55      INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices 
    5556      ! 
    5657      INTEGER  ::   ji, jj               ! loop index 
     
    6263      DO jj = 1, jpj 
    6364         DO ji = 1, jpi 
    64             zts(ji,jj,jp_tem) = tsn(ji,jj,mikt(ji,jj),jp_tem) 
    65             zts(ji,jj,jp_sal) = tsn(ji,jj,mikt(ji,jj),jp_sal) 
     65            zts(ji,jj,jp_tem) = ts(ji,jj,mikt(ji,jj),jp_tem,Kmm) 
     66            zts(ji,jj,jp_sal) = ts(ji,jj,mikt(ji,jj),jp_sal,Kmm) 
    6667         END DO 
    6768      END DO 
     
    6970      IF( nn_fsbc == 1 ) THEN                             !   Instantaneous surface fields        ! 
    7071         !                                                ! ---------------------------------------- ! 
    71          ssu_m(:,:) = ub(:,:,1) 
    72          ssv_m(:,:) = vb(:,:,1) 
     72         ssu_m(:,:) = uu(:,:,1,Kbb) 
     73         ssv_m(:,:) = vv(:,:,1,Kbb) 
    7374         IF( l_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
    7475         ELSE                    ;   sst_m(:,:) = zts(:,:,jp_tem) 
     
    7677         sss_m(:,:) = zts(:,:,jp_sal) 
    7778         !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    78          IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
    79          ELSE                    ;   ssh_m(:,:) = sshn(:,:) 
    80          ENDIF 
    81          ! 
    82          e3t_m(:,:) = e3t_n(:,:,1) 
     79         IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh(:,:,Kmm) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     80         ELSE                    ;   ssh_m(:,:) = ssh(:,:,Kmm) 
     81         ENDIF 
     82         ! 
     83         e3t_m(:,:) = e3t(:,:,1,Kmm) 
    8384         ! 
    8485         frq_m(:,:) = fraqsr_1lev(:,:) 
     
    9293            IF(lwp) WRITE(numout,*) '~~~~~~~   ' 
    9394            zcoef = REAL( nn_fsbc - 1, wp ) 
    94             ssu_m(:,:) = zcoef * ub(:,:,1) 
    95             ssv_m(:,:) = zcoef * vb(:,:,1) 
     95            ssu_m(:,:) = zcoef * uu(:,:,1,Kbb) 
     96            ssv_m(:,:) = zcoef * vv(:,:,1,Kbb) 
    9697            IF( l_useCT )  THEN    ;   sst_m(:,:) = zcoef * eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
    9798            ELSE                    ;   sst_m(:,:) = zcoef * zts(:,:,jp_tem) 
     
    99100            sss_m(:,:) = zcoef * zts(:,:,jp_sal) 
    100101            !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    101             IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 
    102             ELSE                    ;   ssh_m(:,:) = zcoef * sshn(:,:) 
    103             ENDIF 
    104             ! 
    105             e3t_m(:,:) = zcoef * e3t_n(:,:,1) 
     102            IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = zcoef * ( ssh(:,:,Kmm) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 
     103            ELSE                    ;   ssh_m(:,:) = zcoef *   ssh(:,:,Kmm) 
     104            ENDIF 
     105            ! 
     106            e3t_m(:,:) = zcoef * e3t(:,:,1,Kmm) 
    106107            ! 
    107108            frq_m(:,:) = zcoef * fraqsr_1lev(:,:) 
     
    120121         !                                                !        Cumulate at each time step        ! 
    121122         !                                                ! ---------------------------------------- ! 
    122          ssu_m(:,:) = ssu_m(:,:) + ub(:,:,1) 
    123          ssv_m(:,:) = ssv_m(:,:) + vb(:,:,1) 
     123         ssu_m(:,:) = ssu_m(:,:) + uu(:,:,1,Kbb) 
     124         ssv_m(:,:) = ssv_m(:,:) + vv(:,:,1,Kbb) 
    124125         IF( l_useCT )  THEN     ;   sst_m(:,:) = sst_m(:,:) + eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
    125126         ELSE                    ;   sst_m(:,:) = sst_m(:,:) + zts(:,:,jp_tem) 
     
    127128         sss_m(:,:) = sss_m(:,:) + zts(:,:,jp_sal) 
    128129         !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    129          IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
    130          ELSE                    ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) 
    131          ENDIF 
    132          ! 
    133          e3t_m(:,:) = e3t_m(:,:) + e3t_n(:,:,1) 
     130         IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh_m(:,:) + ssh(:,:,Kmm) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     131         ELSE                    ;   ssh_m(:,:) = ssh_m(:,:) + ssh(:,:,Kmm) 
     132         ENDIF 
     133         ! 
     134         e3t_m(:,:) = e3t_m(:,:) + e3t(:,:,1,Kmm) 
    134135         ! 
    135136         frq_m(:,:) = frq_m(:,:) + fraqsr_1lev(:,:) 
     
    184185 
    185186 
    186    SUBROUTINE sbc_ssm_init 
     187   SUBROUTINE sbc_ssm_init( Kbb, Kmm ) 
    187188      !!---------------------------------------------------------------------- 
    188189      !!                  ***  ROUTINE sbc_ssm_init  *** 
     
    192193      !! ** Action  : - read parameters 
    193194      !!---------------------------------------------------------------------- 
     195      INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices 
    194196      REAL(wp) ::   zcoef, zf_sbc   ! local scalar 
    195197      !!---------------------------------------------------------------------- 
     
    242244         ! 
    243245         IF(lwp) WRITE(numout,*) '   default initialisation of ss._m arrays' 
    244          ssu_m(:,:) = ub(:,:,1) 
    245          ssv_m(:,:) = vb(:,:,1) 
    246          IF( l_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 
    247          ELSE                   ;   sst_m(:,:) = tsn(:,:,1,jp_tem) 
    248          ENDIF 
    249          sss_m(:,:) = tsn  (:,:,1,jp_sal) 
    250          ssh_m(:,:) = sshn (:,:) 
    251          e3t_m(:,:) = e3t_n(:,:,1) 
     246         ssu_m(:,:) = uu(:,:,1,Kbb) 
     247         ssv_m(:,:) = vv(:,:,1,Kbb) 
     248         IF( l_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( ts(:,:,1,jp_tem,Kmm), ts(:,:,1,jp_sal,Kmm) ) 
     249         ELSE                   ;   sst_m(:,:) = ts(:,:,1,jp_tem,Kmm) 
     250         ENDIF 
     251         sss_m(:,:) = ts  (:,:,1,jp_sal,Kmm) 
     252         ssh_m(:,:) = ssh(:,:,Kmm) 
     253         e3t_m(:,:) = e3t (:,:,1,Kmm) 
    252254         frq_m(:,:) = 1._wp 
    253255         ! 
Note: See TracChangeset for help on using the changeset viewer.