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 10803 for NEMO/branches/UKMO/r8395_cpl-pressure/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90 – NEMO

Ignore:
Timestamp:
2019-03-26T11:46:36+01:00 (4 years ago)
Author:
jcastill
Message:

Complete set of changes to use pressure read from coupling when available rather than from file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/r8395_cpl-pressure/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r10797 r10803  
    182182 
    183183   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   albedo_oce_mix    ! ocean albedo sent to atmosphere (mix clear/overcast sky) 
    184  
    185    REAL(wp) ::   rpref = 101000._wp   ! reference atmospheric pressure[N/m2]  
    186    REAL(wp) ::   r1_grau              ! = 1.e0 / (grav * rau0)  
    187184 
    188185   INTEGER , ALLOCATABLE, SAVE, DIMENSION(    :) ::   nrcvinfo           ! OASIS info argument 
     
    535532      !                                                      ! Mean Sea Level Pressure   !  
    536533      !                                                      ! ------------------------- !  
    537       srcv(jpr_mslp)%clname = 'O_MSLP'     ;   IF( TRIM(sn_rcv_mslp%cldes  ) == 'coupled' )    srcv(jpr_mslp)%laction = .TRUE.  
    538  
     534      srcv(jpr_mslp)%clname = 'O_MSLP'  
     535      IF( TRIM(sn_rcv_mslp%cldes  ) == 'coupled' ) THEN  
     536         srcv(jpr_mslp)%laction = .TRUE.  
     537         cpl_mslp = .TRUE.  
     538      ENDIF 
    539539      !                                                      ! ------------------------- ! 
    540540      !                                                      !   topmelt and botmelt     !    
     
    975975      !!---------------------------------------------------------------------- 
    976976      USE zdf_oce,  ONLY : ln_zdfqiao 
     977      USE sbcssm ,  ONLY : sbc_ssm_cpl  
     978      USE lib_fortran     ! distributed memory computing library 
    977979 
    978980      IMPLICIT NONE 
     
    11381140          IF( kt /= nit000 )   ssh_ibb(:,:) = ssh_ib(:,:)    !* Swap of ssh_ib fields  
    11391141 
    1140           r1_grau = 1.e0 / (grav * rau0)               !* constant for optimization  
    1141           ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rpref ) * r1_grau    ! equivalent ssh (inverse barometer)  
    1142           apr   (:,:) =     frcv(jpr_mslp)%z3(:,:,1)                         !atmospheric pressure  
    1143      
    1144           IF( kt == nit000 ) ssh_ibb(:,:) = ssh_ib(:,:)  ! correct this later (read from restart if possible)  
     1142          !                                                  !* update the reference atmospheric pressure (if necessary)  
     1143          IF( ln_ref_apr )  rn_pref = glob_sum( frcv(jpr_mslp)%z3(:,:,1) * e1e2t(:,:) ) / tarea 
     1144 
     1145          ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rn_pref ) * r1_grau  ! equivalent ssh (inverse barometer)  
     1146          apr   (:,:) =     frcv(jpr_mslp)%z3(:,:,1)                        !atmospheric pressure  
     1147          ! 
     1148          CALL iom_put( "ssh_ib", ssh_ib )                                  !* output the inverse barometer ssh 
     1149          !                                         ! ---------------------------------------- !  
     1150          IF( kt == nit000 ) THEN                   !   set the forcing field at nit000 - 1    !  
     1151             !                                      ! ---------------------------------------- !  
     1152             !* Restart: read in restart file  
     1153             IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN  
     1154                IF(lwp) WRITE(numout,*) 'sbc_cpl:   ssh_ibb read in the restart file'  
     1155                CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb )   ! before inv. barometer ssh  
     1156             ELSE                                         !* no restart: set from nit000 values  
     1157                IF(lwp) WRITE(numout,*) 'sbc_cpl:   ssh_ibb set to nit000 values'  
     1158                ssh_ibb(:,:) = ssh_ib(:,:)  
     1159             ENDIF  
     1160          ENDIF  
     1161          !                                         ! ---------------------------------------- !  
     1162          IF( lrst_oce ) THEN                       !      Write in the ocean restart file     !  
     1163             !                                      ! ---------------------------------------- !  
     1164             IF(lwp) WRITE(numout,*)  
     1165             IF(lwp) WRITE(numout,*) 'sbc_cpl : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp  
     1166             IF(lwp) WRITE(numout,*) '~~~~'  
     1167             CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib )  
     1168          ENDIF  
     1169      
     1170          ! Update mean ssh  
     1171          CALL sbc_ssm_cpl( kt ) 
    11451172      END IF  
    11461173      ! 
Note: See TracChangeset for help on using the changeset viewer.