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/sbccpl.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/sbccpl.F90

    r11536 r11949  
    3232   USE cpl_oasis3     ! OASIS3 coupling 
    3333   USE geo2ocean      !  
    34    USE oce     , ONLY : tsn, un, vn, sshn, ub, vb, sshb, fraqsr_1lev 
     34   USE oce     , ONLY : ts, uu, vv, ssh, fraqsr_1lev 
    3535   USE ocealb         !  
    3636   USE eosbn2         !  
     
    10491049 
    10501050 
    1051    SUBROUTINE sbc_cpl_rcv( kt, k_fsbc, k_ice )      
     1051   SUBROUTINE sbc_cpl_rcv( kt, k_fsbc, k_ice, Kbb, Kmm )      
    10521052      !!---------------------------------------------------------------------- 
    10531053      !!             ***  ROUTINE sbc_cpl_rcv  *** 
     
    10991099      INTEGER, INTENT(in) ::   k_fsbc      ! frequency of sbc (-> ice model) computation  
    11001100      INTEGER, INTENT(in) ::   k_ice       ! ice management in the sbc (=0/1/2/3) 
     1101      INTEGER, INTENT(in) ::   Kbb, Kmm    ! ocean model time level indices 
    11011102      !! 
    11021103      LOGICAL  ::   llnewtx, llnewtau      ! update wind stress components and module?? 
     
    13021303         IF( srcv(jpr_sdrftx)%laction .OR. srcv(jpr_sdrfty)%laction .OR. srcv(jpr_wper)%laction & 
    13031304                                      .OR. srcv(jpr_hsig)%laction   .OR. srcv(jpr_wfreq)%laction) THEN 
    1304             CALL sbc_stokes() 
     1305            CALL sbc_stokes( Kmm ) 
    13051306         ENDIF 
    13061307      ENDIF 
     
    13541355      IF( srcv(jpr_ocx1)%laction ) THEN                      ! received by sas in case of opa <-> sas coupling 
    13551356         ssu_m(:,:) = frcv(jpr_ocx1)%z3(:,:,1) 
    1356          ub (:,:,1) = ssu_m(:,:)                             ! will be used in icestp in the call of ice_forcing_tau 
    1357          un (:,:,1) = ssu_m(:,:)                             ! will be used in sbc_cpl_snd if atmosphere coupling 
     1357         uu(:,:,1,Kbb) = ssu_m(:,:)                          ! will be used in icestp in the call of ice_forcing_tau 
     1358         uu(:,:,1,Kmm) = ssu_m(:,:)                          ! will be used in sbc_cpl_snd if atmosphere coupling 
    13581359         CALL iom_put( 'ssu_m', ssu_m ) 
    13591360      ENDIF 
    13601361      IF( srcv(jpr_ocy1)%laction ) THEN 
    13611362         ssv_m(:,:) = frcv(jpr_ocy1)%z3(:,:,1) 
    1362          vb (:,:,1) = ssv_m(:,:)                             ! will be used in icestp in the call of ice_forcing_tau 
    1363          vn (:,:,1) = ssv_m(:,:)                             ! will be used in sbc_cpl_snd if atmosphere coupling 
     1363         vv(:,:,1,Kbb) = ssv_m(:,:)                          ! will be used in icestp in the call of ice_forcing_tau 
     1364         vv(:,:,1,Kmm) = ssv_m(:,:)                          ! will be used in sbc_cpl_snd if atmosphere coupling 
    13641365         CALL iom_put( 'ssv_m', ssv_m ) 
    13651366      ENDIF 
     
    20362037    
    20372038    
    2038    SUBROUTINE sbc_cpl_snd( kt ) 
     2039   SUBROUTINE sbc_cpl_snd( kt, Kbb, Kmm ) 
    20392040      !!---------------------------------------------------------------------- 
    20402041      !!             ***  ROUTINE sbc_cpl_snd  *** 
     
    20462047      !!---------------------------------------------------------------------- 
    20472048      INTEGER, INTENT(in) ::   kt 
     2049      INTEGER, INTENT(in) ::   Kbb, Kmm    ! ocean model time level index 
    20482050      ! 
    20492051      INTEGER ::   ji, jj, jl   ! dummy loop indices 
     
    20632065          
    20642066         IF ( nn_components == jp_iam_opa ) THEN 
    2065             ztmp1(:,:) = tsn(:,:,1,jp_tem)   ! send temperature as it is (potential or conservative) -> use of l_useCT on the received part 
     2067            ztmp1(:,:) = ts(:,:,1,jp_tem,Kmm)   ! send temperature as it is (potential or conservative) -> use of l_useCT on the received part 
    20662068         ELSE 
    20672069            ! we must send the surface potential temperature  
    2068             IF( l_useCT )  THEN    ;   ztmp1(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 
    2069             ELSE                   ;   ztmp1(:,:) = tsn(:,:,1,jp_tem) 
     2070            IF( l_useCT )  THEN    ;   ztmp1(:,:) = eos_pt_from_ct( ts(:,:,1,jp_tem,Kmm), ts(:,:,1,jp_sal,Kmm) ) 
     2071            ELSE                   ;   ztmp1(:,:) = ts(:,:,1,jp_tem,Kmm) 
    20702072            ENDIF 
    20712073            ! 
     
    20952097               CASE default                  ;   CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_temp%clcat' ) 
    20962098               END SELECT 
    2097             CASE( 'oce and weighted ice')    ;   ztmp1(:,:) =   tsn(:,:,1,jp_tem) + rt0   
     2099            CASE( 'oce and weighted ice')    ;   ztmp1(:,:) =   ts(:,:,1,jp_tem,Kmm) + rt0   
    20982100               SELECT CASE( sn_snd_temp%clcat )  
    20992101               CASE( 'yes' )     
     
    23162318         !                                                               i      i+1 (for I) 
    23172319         IF( nn_components == jp_iam_opa ) THEN 
    2318             zotx1(:,:) = un(:,:,1 
    2319             zoty1(:,:) = vn(:,:,1 
     2320            zotx1(:,:) = uu(:,:,1,Kmm 
     2321            zoty1(:,:) = vv(:,:,1,Kmm 
    23202322         ELSE         
    23212323            SELECT CASE( TRIM( sn_snd_crt%cldes ) ) 
     
    23232325               DO jj = 2, jpjm1 
    23242326                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    2325                      zotx1(ji,jj) = 0.5 * ( un(ji,jj,1) + un(ji-1,jj  ,1) ) 
    2326                      zoty1(ji,jj) = 0.5 * ( vn(ji,jj,1) + vn(ji  ,jj-1,1) )  
     2327                     zotx1(ji,jj) = 0.5 * ( uu(ji,jj,1,Kmm) + uu(ji-1,jj  ,1,Kmm) ) 
     2328                     zoty1(ji,jj) = 0.5 * ( vv(ji,jj,1,Kmm) + vv(ji  ,jj-1,1,Kmm) )  
    23272329                  END DO 
    23282330               END DO 
     
    23302332               DO jj = 2, jpjm1 
    23312333                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    2332                      zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   
    2333                      zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj) 
    2334                      zitx1(ji,jj) = 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj) 
    2335                      zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj) 
     2334                     zotx1(ji,jj) = 0.5 * ( uu   (ji,jj,1,Kmm) + uu   (ji-1,jj  ,1,Kmm) ) * zfr_l(ji,jj)   
     2335                     zoty1(ji,jj) = 0.5 * ( vv   (ji,jj,1,Kmm) + vv   (ji  ,jj-1,1,Kmm) ) * zfr_l(ji,jj) 
     2336                     zitx1(ji,jj) = 0.5 * ( u_ice(ji,jj  )     + u_ice(ji-1,jj    )    ) *  fr_i(ji,jj) 
     2337                     zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  )     + v_ice(ji  ,jj-1  )    ) *  fr_i(ji,jj) 
    23362338                  END DO 
    23372339               END DO 
     
    23402342               DO jj = 2, jpjm1 
    23412343                  DO ji = fs_2, fs_jpim1   ! vector opt. 
    2342                      zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   & 
    2343                         &         + 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj) 
    2344                      zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)   & 
    2345                         &         + 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj) 
     2344                     zotx1(ji,jj) = 0.5 * ( uu   (ji,jj,1,Kmm) + uu   (ji-1,jj  ,1,Kmm) ) * zfr_l(ji,jj)   & 
     2345                        &         + 0.5 * ( u_ice(ji,jj  )     + u_ice(ji-1,jj    )    ) *  fr_i(ji,jj) 
     2346                     zoty1(ji,jj) = 0.5 * ( vv   (ji,jj,1,Kmm) + vv   (ji  ,jj-1,1,Kmm) ) * zfr_l(ji,jj)   & 
     2347                        &         + 0.5 * ( v_ice(ji,jj  )     + v_ice(ji  ,jj-1  )    ) *  fr_i(ji,jj) 
    23462348                  END DO 
    23472349               END DO 
     
    24062408             DO jj = 2, jpjm1  
    24072409                DO ji = fs_2, fs_jpim1   ! vector opt.  
    2408                    zotx1(ji,jj) = 0.5 * ( un(ji,jj,1) + un(ji-1,jj  ,1) )  
    2409                    zoty1(ji,jj) = 0.5 * ( vn(ji,jj,1) + vn(ji , jj-1,1) )   
     2410                   zotx1(ji,jj) = 0.5 * ( uu(ji,jj,1,Kmm) + uu(ji-1,jj  ,1,Kmm) )  
     2411                   zoty1(ji,jj) = 0.5 * ( vv(ji,jj,1,Kmm) + vv(ji , jj-1,1,Kmm) )   
    24102412                END DO  
    24112413             END DO  
     
    24132415             DO jj = 2, jpjm1  
    24142416                DO ji = fs_2, fs_jpim1   ! vector opt.  
    2415                    zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)    
    2416                    zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)  
     2417                   zotx1(ji,jj) = 0.5 * ( uu   (ji,jj,1,Kmm) + uu   (ji-1,jj  ,1,Kmm) ) * zfr_l(ji,jj)    
     2418                   zoty1(ji,jj) = 0.5 * ( vv   (ji,jj,1,Kmm) + vv   (ji  ,jj-1,1,Kmm) ) * zfr_l(ji,jj)  
    24172419                   zitx1(ji,jj) = 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj)  
    24182420                   zity1(ji,jj) = 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj)  
     
    24232425             DO jj = 2, jpjm1  
    24242426                DO ji = fs_2, fs_jpim1   ! vector opt.  
    2425                    zotx1(ji,jj) = 0.5 * ( un   (ji,jj,1) + un   (ji-1,jj  ,1) ) * zfr_l(ji,jj)   &  
     2427                   zotx1(ji,jj) = 0.5 * ( uu   (ji,jj,1,Kmm) + uu   (ji-1,jj  ,1,Kmm) ) * zfr_l(ji,jj)   &  
    24262428                      &         + 0.5 * ( u_ice(ji,jj  ) + u_ice(ji-1,jj    ) ) *  fr_i(ji,jj)  
    2427                    zoty1(ji,jj) = 0.5 * ( vn   (ji,jj,1) + vn   (ji  ,jj-1,1) ) * zfr_l(ji,jj)   &  
     2429                   zoty1(ji,jj) = 0.5 * ( vv   (ji,jj,1,Kmm) + vv   (ji  ,jj-1,1,Kmm) ) * zfr_l(ji,jj)   &  
    24282430                      &         + 0.5 * ( v_ice(ji,jj  ) + v_ice(ji  ,jj-1  ) ) *  fr_i(ji,jj)  
    24292431                END DO 
     
    24742476         IF( ln_apr_dyn ) THEN   
    24752477            IF( kt /= nit000 ) THEN   
    2476                ztmp1(:,:) = sshb(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) )   
     2478               ztmp1(:,:) = ssh(:,:,Kbb) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) )   
    24772479            ELSE   
    2478                ztmp1(:,:) = sshb(:,: 
     2480               ztmp1(:,:) = ssh(:,:,Kbb 
    24792481            ENDIF   
    24802482         ELSE   
    2481             ztmp1(:,:) = sshn(:,: 
     2483            ztmp1(:,:) = ssh(:,:,Kmm 
    24822484         ENDIF   
    24832485         CALL cpl_snd( jps_wlev  , isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info )  
     
    24892491         !                          ! removed inverse barometer ssh when Patm 
    24902492         !                          forcing is used (for sea-ice dynamics) 
    2491          IF( ln_apr_dyn ) THEN   ;   ztmp1(:,:) = sshb(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
    2492          ELSE                    ;   ztmp1(:,:) = sshn(:,:) 
     2493         IF( ln_apr_dyn ) THEN   ;   ztmp1(:,:) = ssh(:,:,Kbb) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     2494         ELSE                    ;   ztmp1(:,:) = ssh(:,:,Kmm) 
    24932495         ENDIF 
    24942496         CALL cpl_snd( jps_ssh   , isec, RESHAPE ( ztmp1            , (/jpi,jpj,1/) ), info ) 
     
    24972499      !                                                        ! SSS 
    24982500      IF( ssnd(jps_soce  )%laction )  THEN 
    2499          CALL cpl_snd( jps_soce  , isec, RESHAPE ( tsn(:,:,1,jp_sal), (/jpi,jpj,1/) ), info ) 
     2501         CALL cpl_snd( jps_soce  , isec, RESHAPE ( ts(:,:,1,jp_sal,Kmm), (/jpi,jpj,1/) ), info ) 
    25002502      ENDIF 
    25012503      !                                                        ! first T level thickness  
    25022504      IF( ssnd(jps_e3t1st )%laction )  THEN 
    2503          CALL cpl_snd( jps_e3t1st, isec, RESHAPE ( e3t_n(:,:,1)   , (/jpi,jpj,1/) ), info ) 
     2505         CALL cpl_snd( jps_e3t1st, isec, RESHAPE ( e3t(:,:,1,Kmm)   , (/jpi,jpj,1/) ), info ) 
    25042506      ENDIF 
    25052507      !                                                        ! Qsr fraction 
     
    25242526      !                                                      ! ------------------------- ! 
    25252527      ! needed by Met Office 
    2526       CALL eos_fzp(tsn(:,:,1,jp_sal), sstfrz) 
     2528      CALL eos_fzp(ts(:,:,1,jp_sal,Kmm), sstfrz) 
    25272529      ztmp1(:,:) = sstfrz(:,:) + rt0 
    25282530      IF( ssnd(jps_sstfrz)%laction )  CALL cpl_snd( jps_sstfrz, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info) 
Note: See TracChangeset for help on using the changeset viewer.