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

Ignore:
Timestamp:
2020-09-14T17:40:34+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2195:update to trunk 13461

Location:
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@13382        sette 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/OCE/SBC/sbcssm.F90

    r11405 r13463  
    3232   LOGICAL, SAVE ::   l_ssm_mean = .FALSE.   ! keep track of whether means have been read from restart file 
    3333    
     34#  include "domzgr_substitute.h90" 
    3435   !!---------------------------------------------------------------------- 
    3536   !! NEMO/OCE 4.0 , NEMO Consortium (2018) 
     
    3940CONTAINS 
    4041 
    41    SUBROUTINE sbc_ssm( kt ) 
     42   SUBROUTINE sbc_ssm( kt, Kbb, Kmm ) 
    4243      !!--------------------------------------------------------------------- 
    4344      !!                     ***  ROUTINE sbc_oce  *** 
     
    5354      !!--------------------------------------------------------------------- 
    5455      INTEGER, INTENT(in) ::   kt   ! ocean time step 
     56      INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices 
    5557      ! 
    5658      INTEGER  ::   ji, jj               ! loop index 
     
    6062      ! 
    6163      !                                        !* surface T-, U-, V- ocean level variables (T, S, depth, velocity) 
    62       DO jj = 1, jpj 
    63          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) 
    66          END DO 
    67       END DO 
     64      zts(:,:,jp_tem) = ts(:,:,1,jp_tem,Kmm) 
     65      zts(:,:,jp_sal) = ts(:,:,1,jp_sal,Kmm) 
    6866      ! 
    6967      IF( nn_fsbc == 1 ) THEN                             !   Instantaneous surface fields        ! 
    7068         !                                                ! ---------------------------------------- ! 
    71          ssu_m(:,:) = ub(:,:,1) 
    72          ssv_m(:,:) = vb(:,:,1) 
     69         ssu_m(:,:) = uu(:,:,1,Kbb) 
     70         ssv_m(:,:) = vv(:,:,1,Kbb) 
    7371         IF( l_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
    74          ELSE                    ;   sst_m(:,:) = zts(:,:,jp_tem) 
     72         ELSE                   ;   sst_m(:,:) = zts(:,:,jp_tem) 
    7573         ENDIF 
    7674         sss_m(:,:) = zts(:,:,jp_sal) 
    7775         !                          ! 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) 
     76         IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh(:,:,Kmm) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     77         ELSE                    ;   ssh_m(:,:) = ssh(:,:,Kmm) 
     78         ENDIF 
     79         ! 
     80         e3t_m(:,:) = e3t(:,:,1,Kmm) 
    8381         ! 
    8482         frq_m(:,:) = fraqsr_1lev(:,:) 
     
    9290            IF(lwp) WRITE(numout,*) '~~~~~~~   ' 
    9391            zcoef = REAL( nn_fsbc - 1, wp ) 
    94             ssu_m(:,:) = zcoef * ub(:,:,1) 
    95             ssv_m(:,:) = zcoef * vb(:,:,1) 
     92            ssu_m(:,:) = zcoef * uu(:,:,1,Kbb) 
     93            ssv_m(:,:) = zcoef * vv(:,:,1,Kbb) 
    9694            IF( l_useCT )  THEN    ;   sst_m(:,:) = zcoef * eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
    9795            ELSE                    ;   sst_m(:,:) = zcoef * zts(:,:,jp_tem) 
     
    9997            sss_m(:,:) = zcoef * zts(:,:,jp_sal) 
    10098            !                          ! 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) 
     99            IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = zcoef * ( ssh(:,:,Kmm) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 
     100            ELSE                    ;   ssh_m(:,:) = zcoef *   ssh(:,:,Kmm) 
     101            ENDIF 
     102            ! 
     103            e3t_m(:,:) = zcoef * e3t(:,:,1,Kmm) 
    106104            ! 
    107105            frq_m(:,:) = zcoef * fraqsr_1lev(:,:) 
     
    120118         !                                                !        Cumulate at each time step        ! 
    121119         !                                                ! ---------------------------------------- ! 
    122          ssu_m(:,:) = ssu_m(:,:) + ub(:,:,1) 
    123          ssv_m(:,:) = ssv_m(:,:) + vb(:,:,1) 
     120         ssu_m(:,:) = ssu_m(:,:) + uu(:,:,1,Kbb) 
     121         ssv_m(:,:) = ssv_m(:,:) + vv(:,:,1,Kbb) 
    124122         IF( l_useCT )  THEN     ;   sst_m(:,:) = sst_m(:,:) + eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
    125123         ELSE                    ;   sst_m(:,:) = sst_m(:,:) + zts(:,:,jp_tem) 
     
    127125         sss_m(:,:) = sss_m(:,:) + zts(:,:,jp_sal) 
    128126         !                          ! 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) 
     127         IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh_m(:,:) + ssh(:,:,Kmm) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     128         ELSE                    ;   ssh_m(:,:) = ssh_m(:,:) + ssh(:,:,Kmm) 
     129         ENDIF 
     130         ! 
     131         e3t_m(:,:) = e3t_m(:,:) + e3t(:,:,1,Kmm) 
    134132         ! 
    135133         frq_m(:,:) = frq_m(:,:) + fraqsr_1lev(:,:) 
     
    184182 
    185183 
    186    SUBROUTINE sbc_ssm_init 
     184   SUBROUTINE sbc_ssm_init( Kbb, Kmm ) 
    187185      !!---------------------------------------------------------------------- 
    188186      !!                  ***  ROUTINE sbc_ssm_init  *** 
     
    192190      !! ** Action  : - read parameters 
    193191      !!---------------------------------------------------------------------- 
     192      INTEGER, INTENT(in) ::   Kbb, Kmm   ! ocean time level indices 
    194193      REAL(wp) ::   zcoef, zf_sbc   ! local scalar 
    195194      !!---------------------------------------------------------------------- 
     
    210209            l_ssm_mean = .TRUE. 
    211210            IF(lrxios) CALL iom_swap( TRIM(crxios_context) ) 
    212             CALL iom_get( numror               , 'nn_fsbc', zf_sbc, ldxios = lrxios )    ! sbc frequency of previous run 
    213             CALL iom_get( numror, jpdom_autoglo, 'ssu_m'  , ssu_m, ldxios = lrxios  )    ! sea surface mean velocity    (U-point) 
    214             CALL iom_get( numror, jpdom_autoglo, 'ssv_m'  , ssv_m, ldxios = lrxios  )    !   "         "    velocity    (V-point) 
    215             CALL iom_get( numror, jpdom_autoglo, 'sst_m'  , sst_m, ldxios = lrxios  )    !   "         "    temperature (T-point) 
    216             CALL iom_get( numror, jpdom_autoglo, 'sss_m'  , sss_m, ldxios = lrxios  )    !   "         "    salinity    (T-point) 
    217             CALL iom_get( numror, jpdom_autoglo, 'ssh_m'  , ssh_m, ldxios = lrxios  )    !   "         "    height      (T-point) 
    218             CALL iom_get( numror, jpdom_autoglo, 'e3t_m'  , e3t_m, ldxios = lrxios  )    ! 1st level thickness          (T-point) 
    219211            ! fraction of solar net radiation absorbed in 1st T level 
    220212            IF( iom_varid( numror, 'frq_m', ldstop = .FALSE. ) > 0 ) THEN 
    221                CALL iom_get( numror, jpdom_autoglo, 'frq_m'  , frq_m, ldxios = lrxios  ) 
     213               CALL iom_get( numror, jpdom_auto, 'frq_m'  , frq_m, ldxios = lrxios  ) 
    222214            ELSE 
    223215               frq_m(:,:) = 1._wp   ! default definition 
     
    244236         ! 
    245237         IF(lwp) WRITE(numout,*) '   default initialisation of ss._m arrays' 
    246          ssu_m(:,:) = ub(:,:,1) 
    247          ssv_m(:,:) = vb(:,:,1) 
    248          IF( l_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( tsn(:,:,1,jp_tem), tsn(:,:,1,jp_sal) ) 
    249          ELSE                   ;   sst_m(:,:) = tsn(:,:,1,jp_tem) 
    250          ENDIF 
    251          sss_m(:,:) = tsn  (:,:,1,jp_sal) 
    252          ssh_m(:,:) = sshn (:,:) 
    253          e3t_m(:,:) = e3t_n(:,:,1) 
     238         ssu_m(:,:) = uu(:,:,1,Kbb) 
     239         ssv_m(:,:) = vv(:,:,1,Kbb) 
     240         IF( l_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( ts(:,:,1,jp_tem,Kmm), ts(:,:,1,jp_sal,Kmm) ) 
     241         ELSE                   ;   sst_m(:,:) = ts(:,:,1,jp_tem,Kmm) 
     242         ENDIF 
     243         sss_m(:,:) = ts  (:,:,1,jp_sal,Kmm) 
     244         ssh_m(:,:) = ssh(:,:,Kmm) 
     245         e3t_m(:,:) = e3t (:,:,1,Kmm) 
    254246         frq_m(:,:) = 1._wp 
    255247         ! 
Note: See TracChangeset for help on using the changeset viewer.