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 5034 for branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90 – NEMO

Ignore:
Timestamp:
2015-01-15T14:48:42+01:00 (9 years ago)
Author:
andrewryan
Message:

merge with trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_r4650_UKMO14.12_STAND_ALONE_OBSOPER/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90

    r4292 r5034  
    1414   USE oce             ! ocean dynamics and tracers 
    1515   USE dom_oce         ! ocean space and time domain 
    16    USE sbc_oce         ! Surface boundary condition: ocean fields 
    1716   USE sbc_oce         ! surface boundary condition: ocean fields 
    1817   USE sbcapr          ! surface boundary condition: atmospheric pressure 
    19    USE prtctl          ! Print control                    (prt_ctl routine) 
    20    USE iom 
     18   USE eosbn2          ! equation of state and related derivatives 
     19   ! 
    2120   USE in_out_manager  ! I/O manager 
     21   USE prtctl          ! Print control 
     22   USE iom             ! IOM library 
    2223 
    2324   IMPLICIT NONE 
     
    5455      INTEGER, INTENT(in) ::   kt   ! ocean time step 
    5556      ! 
     57      INTEGER  ::   ji, jj               ! loop index 
    5658      REAL(wp) ::   zcoef, zf_sbc       ! local scalar 
     59      REAL(wp), DIMENSION(jpi,jpj,jpts) :: zts 
     60      REAL(wp), DIMENSION(jpi,jpj)      :: zub, zvb,zdep 
    5761      !!--------------------------------------------------------------------- 
     62       
     63      !                                        !* first wet T-, U-, V- ocean level (ISF) variables (T, S, depth, velocity) 
     64      DO jj = 1, jpj 
     65         DO ji = 1, jpi 
     66            zub(ji,jj)        = ub (ji,jj,miku(ji,jj)) 
     67            zvb(ji,jj)        = vb (ji,jj,mikv(ji,jj)) 
     68            zts(ji,jj,jp_tem) = tsn(ji,jj,mikt(ji,jj),jp_tem) 
     69            zts(ji,jj,jp_sal) = tsn(ji,jj,mikt(ji,jj),jp_sal) 
     70         END DO 
     71      END DO 
     72      ! 
     73      IF( lk_vvl ) THEN 
     74         DO jj = 1, jpj 
     75            DO ji = 1, jpi 
     76               zdep(ji,jj) = fse3t_n(ji,jj,mikt(ji,jj)) 
     77            END DO 
     78         END DO 
     79      ENDIF 
    5880      !                                                   ! ---------------------------------------- ! 
    5981      IF( nn_fsbc == 1 ) THEN                             !   Instantaneous surface fields        ! 
    6082         !                                                ! ---------------------------------------- ! 
    61          ssu_m(:,:) = ub(:,:,1) 
    62          ssv_m(:,:) = vb(:,:,1) 
    63          sst_m(:,:) = tsn(:,:,1,jp_tem) 
    64          sss_m(:,:) = tsn(:,:,1,jp_sal) 
     83         ssu_m(:,:) = zub(:,:) 
     84         ssv_m(:,:) = zvb(:,:) 
     85         IF( ln_useCT )  THEN    ;   sst_m(:,:) = eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
     86         ELSE                    ;   sst_m(:,:) = zts(:,:,jp_tem) 
     87         ENDIF 
     88         sss_m(:,:) = zts(:,:,jp_sal) 
    6589         !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    6690         IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     
    6892         ENDIF 
    6993         ! 
    70          IF( lk_vvl )   fse3t_m(:,:) = fse3t_n(:,:,1) 
     94         IF( lk_vvl )   fse3t_m(:,:) = zdep(:,:) 
    7195         ! 
    7296      ELSE 
     
    77101            IF(lwp) WRITE(numout,*) '~~~~~~~   mean fields initialised to instantaneous values' 
    78102            zcoef = REAL( nn_fsbc - 1, wp ) 
    79             ssu_m(:,:) = zcoef * ub(:,:,1) 
    80             ssv_m(:,:) = zcoef * vb(:,:,1) 
    81             sst_m(:,:) = zcoef * tsn(:,:,1,jp_tem) 
    82             sss_m(:,:) = zcoef * tsn(:,:,1,jp_sal) 
    83             !                          ! removed inverse barometer ssh when Patm forcing is used  
     103            ssu_m(:,:) = zcoef * zub(:,:) 
     104            ssv_m(:,:) = zcoef * zvb(:,:) 
     105            IF( ln_useCT )  THEN    ;   sst_m(:,:) = zcoef * eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
     106            ELSE                    ;   sst_m(:,:) = zcoef * zts(:,:,jp_tem) 
     107            ENDIF 
     108            sss_m(:,:) = zcoef * zts(:,:,jp_sal) 
     109            !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    84110            IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 
    85             ELSE                    ;   ssh_m(:,:) = zcoef *   sshn(:,:) 
     111            ELSE                    ;   ssh_m(:,:) = zcoef * sshn(:,:) 
    86112            ENDIF 
    87             IF( lk_vvl )   fse3t_m(:,:) = zcoef * fse3t_n(:,:,1) 
     113            ! 
     114            IF( lk_vvl )   fse3t_m(:,:) = zcoef * zdep(:,:) 
    88115            !                                             ! ---------------------------------------- ! 
    89116         ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN      !   Initialisation: New mean computation   ! 
     
    99126         !                                                !        Cumulate at each time step        ! 
    100127         !                                                ! ---------------------------------------- ! 
    101          ssu_m(:,:) = ssu_m(:,:) + ub(:,:,1) 
    102          ssv_m(:,:) = ssv_m(:,:) + vb(:,:,1) 
    103          sst_m(:,:) = sst_m(:,:) + tsn(:,:,1,jp_tem) 
    104          sss_m(:,:) = sss_m(:,:) + tsn(:,:,1,jp_sal) 
     128         ssu_m(:,:) = ssu_m(:,:) + zub(:,:) 
     129         ssv_m(:,:) = ssv_m(:,:) + zvb(:,:) 
     130         IF( ln_useCT )  THEN    ;   sst_m(:,:) = sst_m(:,:) + eos_pt_from_ct( zts(:,:,jp_tem), zts(:,:,jp_sal) ) 
     131         ELSE                    ;   sst_m(:,:) = sst_m(:,:) + zts(:,:,jp_tem) 
     132         ENDIF 
     133         sss_m(:,:) = sss_m(:,:) + zts(:,:,jp_sal) 
    105134         !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    106          IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 *  ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     135         IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
    107136         ELSE                    ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) 
    108137         ENDIF 
    109          IF( lk_vvl )   fse3t_m(:,:) = fse3t_m(:,:) + fse3t_n(:,:,1) 
     138         ! 
     139         IF( lk_vvl )   fse3t_m(:,:) = fse3t_m(:,:) + zdep(:,:) 
    110140 
    111141         !                                                ! ---------------------------------------- ! 
Note: See TracChangeset for help on using the changeset viewer.