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 15537 for NEMO/branches/UKMO/v15531_cpl-mslp-apr/src/OCE/SBC/sbccpl.F90 – NEMO

Ignore:
Timestamp:
2021-11-25T12:47:25+01:00 (3 years ago)
Author:
jcastill
Message:

Changes compatible with the ticket (not tested in this revision)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/v15531_cpl-mslp-apr/src/OCE/SBC/sbccpl.F90

    r15004 r15537  
    220220#endif 
    221221 
    222    REAL(wp) ::   rpref = 101000._wp   ! reference atmospheric pressure[N/m2] 
    223    REAL(wp) ::   r1_grau              ! = 1.e0 / (grav * rho0) 
    224  
    225222   INTEGER , ALLOCATABLE, SAVE, DIMENSION(:) ::   nrcvinfo           ! OASIS info argument 
    226223 
     
    601598      !                                                      ! Mean Sea Level Pressure   ! 
    602599      !                                                      ! ------------------------- ! 
    603       srcv(jpr_mslp)%clname = 'O_MSLP'     ;   IF( TRIM(sn_rcv_mslp%cldes  ) == 'coupled' )    srcv(jpr_mslp)%laction = .TRUE. 
     600      srcv(jpr_mslp)%clname = 'O_MSLP' 
     601      IF( TRIM(sn_rcv_mslp%cldes  ) == 'coupled' ) THEN 
     602         srcv(jpr_mslp)%laction = .TRUE. 
     603         cpl_mslp = .TRUE. 
     604      ENDIF 
    604605      ! 
    605606      !                                                      ! --------------------------------- ! 
     
    11751176      !!---------------------------------------------------------------------- 
    11761177      USE zdf_oce,  ONLY :   ln_zdfswm 
     1178      USE sbcssm ,  ONLY :   sbc_ssm_cpl    
     1179      USE lib_fortran     ! distributed memory computing library 
    11771180      ! 
    11781181      INTEGER, INTENT(in) ::   kt          ! ocean model time step index 
     
    13481351      !                                                      ! ========================= ! 
    13491352      IF( srcv(jpr_mslp)%laction ) THEN                    ! UKMO SHELF effect of atmospheric pressure on SSH 
    1350           IF( kt /= nit000 )   ssh_ibb(:,:) = ssh_ib(:,:)    !* Swap of ssh_ib fields 
    1351  
    1352           r1_grau = 1.e0 / (grav * rho0)               !* constant for optimization 
    1353           ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rpref ) * r1_grau    ! equivalent ssh (inverse barometer) 
    1354           apr   (:,:) =     frcv(jpr_mslp)%z3(:,:,1)                         !atmospheric pressure 
    1355  
    1356           IF( kt == nit000 ) ssh_ibb(:,:) = ssh_ib(:,:)  ! correct this later (read from restart if possible) 
     1353         IF( ln_apr_dyn ) THEN   
     1354            IF( kt /= nit000 )   ssh_ibb(:,:) = ssh_ib(:,:)     !* Swap of ssh_ib fields 
     1355               !                                  !* update the reference atmospheric pressure (if necessary)    
     1356               IF( ln_ref_apr )  rn_pref = glob_sum( 'sbccpl', frcv(jpr_mslp)%z3(:,:,1) * e1e2t(:,:) ) / tarea 
     1357        
     1358               ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rn_pref ) * r1_grau  ! equivalent ssh (inverse barometer)    
     1359               apr   (:,:) =     frcv(jpr_mslp)%z3(:,:,1)                        !atmospheric pressure    
     1360               !   
     1361               CALL iom_put( "ssh_ib", ssh_ib )   !* output the inverse barometer ssh   
     1362               !                                         ! ---------------------------------------- !    
     1363               IF( kt == nit000 ) THEN                   !   set the forcing field at nit000 - 1    !    
     1364                  !                                      ! ---------------------------------------- !    
     1365                  !* Restart: read in restart file    
     1366                  IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN    
     1367                     IF(lwp) WRITE(numout,*) 'sbc_cpl:   ssh_ibb read in the restart file'    
     1368                     CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb )   ! before inv. barometer ssh    
     1369                  ELSE                                         !* no restart: set from nit000 values    
     1370                     IF(lwp) WRITE(numout,*) 'sbc_cpl:   ssh_ibb set to nit000 values'    
     1371                     ssh_ibb(:,:) = ssh_ib(:,:)    
     1372                  ENDIF    
     1373               ENDIF    
     1374               !                                         ! ---------------------------------------- !    
     1375               IF( lrst_oce ) THEN                       !      Write in the ocean restart file     !    
     1376                  !                                      ! ---------------------------------------- !    
     1377                  IF(lwp) WRITE(numout,*)    
     1378                  IF(lwp) WRITE(numout,*) 'sbc_cpl : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp    
     1379                  IF(lwp) WRITE(numout,*) '~~~~'    
     1380                  CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib )    
     1381               ENDIF    
     1382            ENDIF   
     1383         
     1384            ! Update mean ssh    
     1385            IF( nn_components /= jp_iam_sas ) CALL sbc_ssm_cpl( kt ) 
     1386         ENDIF 
    13571387      ENDIF 
    13581388      ! 
Note: See TracChangeset for help on using the changeset viewer.