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 – NEMO

Changeset 10803


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

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

Location:
NEMO/branches/UKMO/r8395_cpl-pressure/NEMOGCM/NEMO/OPA_SRC
Files:
5 edited

Legend:

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

    r10797 r10803  
    2626    
    2727   !                                !!* namsbc_apr namelist (Atmospheric PRessure) * 
     28   LOGICAL, PUBLIC ::   cpl_mslp = .FALSE. ! Presure is passed via coupling 
    2829   LOGICAL, PUBLIC ::   ln_apr_obc   !: inverse barometer added to OBC ssh data  
    2930   LOGICAL, PUBLIC ::   ln_ref_apr   !: ref. pressure: global mean Patm (F) or a constant (F) 
    30    REAL(wp)        ::   rn_pref      !  reference atmospheric pressure   [N/m2] 
     31   REAL(wp),PUBLIC ::   rn_pref      !  reference atmospheric pressure   [N/m2] 
    3132 
    3233   REAL(wp), ALLOCATABLE, SAVE, PUBLIC, DIMENSION(:,:) ::   ssh_ib    ! Inverse barometer now    sea surface height   [m] 
     
    3435   REAL(wp), ALLOCATABLE, SAVE, PUBLIC, DIMENSION(:,:) ::   apr       ! atmospheric pressure at kt                 [N/m2] 
    3536    
    36    REAL(wp) ::   tarea                ! whole domain mean masked ocean surface 
    37    REAL(wp) ::   r1_grau              ! = 1.e0 / (grav * rau0) 
     37   REAL(wp), PUBLIC ::   tarea       ! whole domain mean masked ocean surface 
     38   REAL(wp), PUBLIC ::   r1_grau     ! = 1.e0 / (grav * rau0) 
    3839    
    3940   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_apr   ! structure of input fields (file informations, fields read) 
     
    8283         IF(lwm) WRITE ( numond, namsbc_apr ) 
    8384         ! 
    84          ALLOCATE( sf_apr(1), STAT=ierror )           !* allocate and fill sf_sst (forcing structure) with sn_sst 
    85          IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'sbc_apr: unable to allocate sf_apr structure' ) 
    86          ! 
    87          CALL fld_fill( sf_apr, (/ sn_apr /), cn_dir, 'sbc_apr', 'Atmospheric pressure ', 'namsbc_apr' ) 
    88                                 ALLOCATE( sf_apr(1)%fnow(jpi,jpj,1)   ) 
    89          IF( sn_apr%ln_tint )   ALLOCATE( sf_apr(1)%fdta(jpi,jpj,1,2) ) 
    90                                 ALLOCATE( ssh_ib(jpi,jpj) , ssh_ibb(jpi,jpj) ) 
    91                                 ALLOCATE( apr (jpi,jpj) ) 
     85         IF( .NOT. cpl_mslp ) THEN  
     86            ALLOCATE( sf_apr(1), STAT=ierror )           !* allocate and fill sf_sst (forcing structure) with sn_sst 
     87            IF( ierror > 0 )   CALL ctl_stop( 'STOP', 'sbc_apr: unable to allocate sf_apr structure' ) 
     88            ! 
     89            CALL fld_fill( sf_apr, (/ sn_apr /), cn_dir, 'sbc_apr', 'Atmospheric pressure ', 'namsbc_apr' ) 
     90                                   ALLOCATE( sf_apr(1)%fnow(jpi,jpj,1)   ) 
     91            IF( sn_apr%ln_tint )   ALLOCATE( sf_apr(1)%fdta(jpi,jpj,1,2) ) 
     92         ENDIF 
     93                                   ALLOCATE( ssh_ib(jpi,jpj) , ssh_ibb(jpi,jpj) ) 
     94                                   ALLOCATE( apr (jpi,jpj) ) 
    9295         ! 
    9396         IF(lwp) THEN                                 !* control print 
    9497            WRITE(numout,*) 
    95             WRITE(numout,*) '   Namelist namsbc_apr : Atmospheric PRessure as extrenal forcing' 
     98            IF( cpl_mslp ) THEN  
     99               WRITE(numout,*) '   Namelist namsbc_apr : Atmospheric Pressure as extrenal coupling'  
     100            ELSE  
     101               WRITE(numout,*) '   Namelist namsbc_apr : Atmospheric Pressure as extrenal forcing'  
     102            ENDIF  
    96103            WRITE(numout,*) '      ref. pressure: global mean Patm (T) or a constant (F)  ln_ref_apr = ', ln_ref_apr 
    97104         ENDIF 
     
    115122      ENDIF 
    116123 
    117       !                                         ! ========================== ! 
    118       IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN      !    At each sbc time-step   ! 
    119          !                                      ! ===========+++============ ! 
    120          ! 
    121          IF( kt /= nit000 )   ssh_ibb(:,:) = ssh_ib(:,:)    !* Swap of ssh_ib fields 
    122          ! 
    123          CALL fld_read( kt, nn_fsbc, sf_apr )               !* input Patm provided at kt + nn_fsbc/2 
    124          ! 
    125          !                                                  !* update the reference atmospheric pressure (if necessary) 
    126          IF( ln_ref_apr )   rn_pref = glob_sum( sf_apr(1)%fnow(:,:,1) * e1e2t(:,:) ) / tarea 
    127          ! 
    128          !                                                  !* Patm related forcing at kt 
    129          ssh_ib(:,:) = - ( sf_apr(1)%fnow(:,:,1) - rn_pref ) * r1_grau    ! equivalent ssh (inverse barometer) 
    130          apr   (:,:) =     sf_apr(1)%fnow(:,:,1)                        ! atmospheric pressure 
    131          ! 
    132          CALL iom_put( "ssh_ib", ssh_ib )                   !* output the inverse barometer ssh 
    133       ENDIF 
    134  
    135       !                                         ! ---------------------------------------- ! 
    136       IF( kt == nit000 ) THEN                   !   set the forcing field at nit000 - 1    ! 
    137          !                                      ! ---------------------------------------- ! 
    138          !                                            !* Restart: read in restart file 
    139          IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN  
    140             IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb read in the restart file' 
    141             CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb )   ! before inv. barometer ssh 
     124      IF( .NOT. cpl_mslp ) THEN 
     125         !                                         ! ========================== ! 
     126         IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN      !    At each sbc time-step   ! 
     127            !                                      ! ===========+++============ ! 
    142128            ! 
    143          ELSE                                         !* no restart: set from nit000 values 
    144             IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb set to nit000 values' 
    145             ssh_ibb(:,:) = ssh_ib(:,:) 
     129            IF( kt /= nit000 )   ssh_ibb(:,:) = ssh_ib(:,:)    !* Swap of ssh_ib fields 
     130            ! 
     131            CALL fld_read( kt, nn_fsbc, sf_apr )               !* input Patm provided at kt + nn_fsbc/2 
     132            ! 
     133            !                                                  !* update the reference atmospheric pressure (if necessary) 
     134            IF( ln_ref_apr )   rn_pref = glob_sum( sf_apr(1)%fnow(:,:,1) * e1e2t(:,:) ) / tarea 
     135            ! 
     136            !                                                  !* Patm related forcing at kt 
     137            ssh_ib(:,:) = - ( sf_apr(1)%fnow(:,:,1) - rn_pref ) * r1_grau    ! equivalent ssh (inverse barometer) 
     138            apr   (:,:) =     sf_apr(1)%fnow(:,:,1)                        ! atmospheric pressure 
     139            ! 
     140            CALL iom_put( "ssh_ib", ssh_ib )                   !* output the inverse barometer ssh 
    146141         ENDIF 
    147       ENDIF 
    148       !                                         ! ---------------------------------------- ! 
    149       IF( lrst_oce ) THEN                       !      Write in the ocean restart file     ! 
    150          !                                      ! ---------------------------------------- ! 
    151          IF(lwp) WRITE(numout,*) 
    152          IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 
    153          IF(lwp) WRITE(numout,*) '~~~~' 
    154          CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib ) 
     142     
     143         !                                         ! ---------------------------------------- ! 
     144         IF( kt == nit000 ) THEN                   !   set the forcing field at nit000 - 1    ! 
     145            !                                      ! ---------------------------------------- ! 
     146            !                                            !* Restart: read in restart file 
     147            IF( ln_rstart .AND. iom_varid( numror, 'ssh_ibb', ldstop = .FALSE. ) > 0 ) THEN  
     148               IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb read in the restart file' 
     149               CALL iom_get( numror, jpdom_autoglo, 'ssh_ibb', ssh_ibb )   ! before inv. barometer ssh 
     150               ! 
     151            ELSE                                         !* no restart: set from nit000 values 
     152               IF(lwp) WRITE(numout,*) 'sbc_apr:   ssh_ibb set to nit000 values' 
     153               ssh_ibb(:,:) = ssh_ib(:,:) 
     154            ENDIF 
     155         ENDIF 
     156         !                                         ! ---------------------------------------- ! 
     157         IF( lrst_oce ) THEN                       !      Write in the ocean restart file     ! 
     158            !                                      ! ---------------------------------------- ! 
     159            IF(lwp) WRITE(numout,*) 
     160            IF(lwp) WRITE(numout,*) 'sbc_apr : ssh_ib written in ocean restart file at it= ', kt,' date= ', ndastp 
     161            IF(lwp) WRITE(numout,*) '~~~~' 
     162            CALL iom_rstput( kt, nitrst, numrow, 'ssh_ibb' , ssh_ib ) 
     163         ENDIF 
    155164      ENDIF 
    156165      ! 
  • 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      ! 
  • NEMO/branches/UKMO/r8395_cpl-pressure/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r10797 r10803  
    357357      !!              - updte the ice fraction : fr_i 
    358358      !!---------------------------------------------------------------------- 
     359      USE sbcapr, ONLY: sbc_apr 
     360      USE bdydta, ONLY: bdy_dta 
     361      ! 
    359362      INTEGER, INTENT(in) ::   kt   ! ocean time step 
    360363      ! 
     
    385388      !                                            !        forcing field computation         ! 
    386389      !                                            ! ---------------------------------------- ! 
     390      ! 
     391      IF( ln_apr_dyn ) CALL sbc_apr( kt )                ! atmospheric pressure provided at kt+0.5*nn_fsbc 
     392                                                         ! (caution called before sbc_ssm) 
    387393      ! 
    388394      ll_sas = nn_components == jp_iam_sas               ! component flags 
     
    420426      END IF 
    421427      IF( ln_mixcpl )          CALL sbc_cpl_rcv   ( kt, nn_fsbc, nn_ice )   ! forced-coupled mixed formulation after forcing 
    422  
     428      IF( ln_bdy )             CALL bdy_dta ( kt, time_offset=+1 )          ! update dynamic & tracer data at open boundaries 
     429                                                                            ! (caution called after sbc_ssm[_cpl] and before ice) 
    423430      ! 
    424431      !                                            !==  Misc. Options  ==! 
  • NEMO/branches/UKMO/r8395_cpl-pressure/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90

    r10797 r10803  
    2727 
    2828   PUBLIC   sbc_ssm        ! routine called by step.F90 
     29   PUBLIC   sbc_ssm_cpl    ! routine called by sbccpl.F90 
    2930   PUBLIC   sbc_ssm_init   ! routine called by sbcmod.F90 
    3031 
     
    7576         sss_m(:,:) = zts(:,:,jp_sal) 
    7677         !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    77          IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
    78          ELSE                    ;   ssh_m(:,:) = sshn(:,:) 
     78         IF( .NOT. cpl_mslp ) THEN 
     79            IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     80            ELSE                    ;   ssh_m(:,:) = sshn(:,:) 
     81            ENDIF 
    7982         ENDIF 
    8083         ! 
     
    98101            sss_m(:,:) = zcoef * zts(:,:,jp_sal) 
    99102            !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    100             IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 
    101             ELSE                    ;   ssh_m(:,:) = zcoef * sshn(:,:) 
     103            IF( .NOT. cpl_mslp ) THEN 
     104               IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) ) 
     105               ELSE                    ;   ssh_m(:,:) = zcoef * sshn(:,:) 
     106               ENDIF 
    102107            ENDIF 
    103108            ! 
     
    112117            sst_m(:,:) = 0._wp 
    113118            sss_m(:,:) = 0._wp 
    114             ssh_m(:,:) = 0._wp 
     119            IF( .NOT. cpl_mslp ) ssh_m(:,:) = 0._wp 
    115120            e3t_m(:,:) = 0._wp 
    116121            frq_m(:,:) = 0._wp 
     
    126131         sss_m(:,:) = sss_m(:,:) + zts(:,:,jp_sal) 
    127132         !                          ! removed inverse barometer ssh when Patm forcing is used (for sea-ice dynamics) 
    128          IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
    129          ELSE                    ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) 
     133         IF( .NOT. cpl_mslp ) THEN 
     134            IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     135            ELSE                    ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) 
     136            ENDIF 
    130137         ENDIF 
    131138         ! 
     
    142149            ssu_m(:,:) = ssu_m(:,:) * zcoef     ! mean suface current  [m/s] 
    143150            ssv_m(:,:) = ssv_m(:,:) * zcoef     ! 
    144             ssh_m(:,:) = ssh_m(:,:) * zcoef     ! mean SSH             [m] 
     151            IF( .NOT. cpl_mslp ) ssh_m(:,:) = ssh_m(:,:) * zcoef     ! mean SSH             [m] 
    145152            e3t_m(:,:) = e3t_m(:,:) * zcoef     ! mean vertical scale factor [m] 
    146153            frq_m(:,:) = frq_m(:,:) * zcoef     ! mean fraction of solar net radiation absorbed in the 1st T level [-] 
     
    160167            CALL iom_rstput( kt, nitrst, numrow, 'sst_m'  , sst_m  ) 
    161168            CALL iom_rstput( kt, nitrst, numrow, 'sss_m'  , sss_m  ) 
    162             CALL iom_rstput( kt, nitrst, numrow, 'ssh_m'  , ssh_m  ) 
     169            IF( .NOT. cpl_mslp ) CALL iom_rstput( kt, nitrst, numrow, 'ssh_m'  , ssh_m  ) 
    163170            CALL iom_rstput( kt, nitrst, numrow, 'e3t_m'  , e3t_m  ) 
    164171            CALL iom_rstput( kt, nitrst, numrow, 'frq_m'  , frq_m  ) 
     
    180187   END SUBROUTINE sbc_ssm 
    181188 
     189   SUBROUTINE sbc_ssm_cpl( kt )  
     190      !!---------------------------------------------------------------------  
     191      !!                   ***  ROUTINE sbc_ssm_cpl  ***  
     192      !!                       
     193      !! ** Purpose :   provide ocean surface variable to sea-surface boundary  
     194      !!                condition computation when pressure is read from coupling  
     195      !!                  
     196      !! ** Method  :   The inverse barometer ssh (i.e. ssh associated with Patm)  
     197      !!                is added to ssh_m when ln_apr_dyn = T. Required for sea-ice dynamics.  
     198      !!---------------------------------------------------------------------  
     199      INTEGER, INTENT(in) ::   kt   ! ocean time step  
     200      !  
     201      REAL(wp) ::   zcoef       ! local scalar  
     202      !!---------------------------------------------------------------------  
     203      !  
     204      IF( nn_fsbc == 1 ) THEN                             !      Instantaneous surface fields        !  
     205         !                                                ! ---------------------------------------- !  
     206         IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) )  
     207         ELSE                    ;   ssh_m(:,:) = sshn(:,:)  
     208         ENDIF  
     209      ELSE  
     210         !                                                ! ----------------------------------------------- !  
     211         IF( kt == nit000 .AND. .NOT. l_ssm_mean ) THEN   !   Initialisation: 1st time-step, no input means !  
     212            !                                             ! ----------------------------------------------- !  
     213            IF(lwp) WRITE(numout,*)  
     214            IF(lwp) WRITE(numout,*) '~~~~~~~   mean ssh field initialised to instantaneous values'  
     215            zcoef = REAL( nn_fsbc - 1, wp )  
     216            zcoef = REAL( nn_fsbc - 1, wp )  
     217            IF( ln_apr_dyn ) THEN    ;  ssh_m(:,:) = zcoef * ( sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) )  
     218            ELSE                     ;  ssh_m(:,:) = zcoef * sshn(:,:)  
     219            ENDIF  
     220            !                                             ! ---------------------------------------- !  
     221         ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN      !   Initialisation: New mean computation   !  
     222            !                                             ! ---------------------------------------- !  
     223            ssh_m(:,:) = 0.e0  
     224         ENDIF  
     225    
     226         IF( ln_apr_dyn ) THEN   ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) )  
     227         ELSE                    ;   ssh_m(:,:) = ssh_m(:,:) + sshn(:,:)  
     228         ENDIF  
     229         !                                                ! ---------------------------------------- !  
     230         IF( MOD( kt - 1 , nn_fsbc ) == 0 ) THEN          !   Mean value at each nn_fsbc time-step   !  
     231            !                                             ! ---------------------------------------- !  
     232            zcoef = 1. / REAL( nn_fsbc, wp )  
     233            ssh_m(:,:) = ssh_m(:,:) * zcoef           ! mean SSH [m]  
     234         ENDIF  
     235         !                                                ! ---------------------------------------- !  
     236         IF( lrst_oce ) THEN                              !      Write in the ocean restart file     !  
     237            !                                             ! ---------------------------------------- !  
     238            IF(lwp) WRITE(numout,*)  
     239            IF(lwp) WRITE(numout,*) 'sbc_ssm_cpl : ssh mean field written in ocean restart file ',   &  
     240               &                    'at it= ', kt,' date= ', ndastp  
     241            IF(lwp) WRITE(numout,*) '~~~~~~~'  
     242            CALL iom_rstput( kt, nitrst, numrow, 'ssh_m'  , ssh_m  )  
     243         ENDIF  
     244      ENDIF  
     245      !  
     246      IF( MOD( kt - 1 , nn_fsbc ) == 0 ) THEN          !   Mean value at each nn_fsbc time-step   !  
     247         CALL iom_put( 'ssh_m', ssh_m )  
     248      ENDIF  
     249      !  
     250   END SUBROUTINE sbc_ssm_cpl 
    182251 
    183252   SUBROUTINE sbc_ssm_init 
  • NEMO/branches/UKMO/r8395_cpl-pressure/NEMOGCM/NEMO/OPA_SRC/step.F90

    r10797 r10803  
    106106      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    107107      IF( ln_tide    )   CALL sbc_tide( kstp )                   ! update tide potential 
    108       IF( ln_apr_dyn )   CALL sbc_apr ( kstp )                   ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib)  
    109       IF( ln_bdy     )   CALL bdy_dta ( kstp, time_offset=+1 )   ! update dynamic & tracer data at open boundaries 
    110108                         CALL sbc     ( kstp )                   ! Sea Boundary Condition (including sea-ice) 
    111109 
Note: See TracChangeset for help on using the changeset viewer.