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

Changeset 6594


Ignore:
Timestamp:
2016-05-20T16:51:52+02:00 (8 years ago)
Author:
jcastill
Message:

Fix the water level coupling by adding the bathymetry to the coupling field

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_ww3_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r6394 r6594  
    141141   INTEGER, PARAMETER ::   jps_ocxw   = 30            ! currents on grid 1  
    142142   INTEGER, PARAMETER ::   jps_ocyw   = 31            ! currents on grid 1  
    143    INTEGER, PARAMETER ::   jpsnd      = 31            ! total number of fields sended 
     143   INTEGER, PARAMETER ::   jps_wlev   = 32            ! water level 
     144   INTEGER, PARAMETER ::   jpsnd      = 32            ! total number of fields sended 
    144145 
    145146   !                                                         !!** namelist namsbc_cpl ** 
     
    157158   TYPE(FLD_C) ::   sn_rcv_cal, sn_rcv_iceflx, sn_rcv_co2, sn_rcv_mslp                           
    158159   ! Send to waves 
    159    TYPE(FLD_C) ::   sn_snd_ifrac, sn_snd_crtw, sn_snd_ssh 
     160   TYPE(FLD_C) ::   sn_snd_ifrac, sn_snd_crtw, sn_snd_wlev 
    160161   ! Received from waves 
    161162   TYPE(FLD_C) ::   sn_rcv_hsig,sn_rcv_phioc 
     
    233234      NAMELIST/namsbc_cpl/  sn_snd_temp , sn_snd_alb  , sn_snd_thick , sn_snd_crt   , sn_snd_co2,      & 
    234235         &                  sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau   , sn_rcv_dqnsdt, sn_rcv_qsr,      & 
    235          &                  sn_snd_ifrac, sn_snd_crtw , sn_snd_ssh   , sn_rcv_hsig  , sn_rcv_phioc ,   & 
     236         &                  sn_snd_ifrac, sn_snd_crtw , sn_snd_wlev  , sn_rcv_hsig  , sn_rcv_phioc ,   & 
    236237         &                  sn_rcv_qns , sn_rcv_emp   , sn_rcv_rnf   , sn_rcv_cal   , sn_rcv_iceflx,   & 
    237238         &                  sn_rcv_co2 , nn_cplmodel  , ln_usecplmask, sn_rcv_mslp 
     
    288289         WRITE(numout,*)'                      - mesh          = ', sn_snd_crt%clvgrd 
    289290         WRITE(numout,*)'      oce co2 flux                    = ', TRIM(sn_snd_co2%cldes   ), ' (', TRIM(sn_snd_co2%clcat   ), ')' 
    290          WRITE(numout,*)'      sea surface height              = ', TRIM(sn_snd_ssh%cldes   ), ' (', TRIM(sn_snd_ssh%clcat   ), ')' 
     291         WRITE(numout,*)'      water level                     = ', TRIM(sn_snd_wlev%cldes  ), ' (', TRIM(sn_snd_wlev%clcat  ), ')' 
    291292         WRITE(numout,*)'      mean sea level pressure         = ', TRIM(sn_rcv_mslp%cldes  ), ' (', TRIM(sn_rcv_mslp%clcat  ), ')' 
    292293         WRITE(numout,*)'      surface current to waves        = ', TRIM(sn_snd_crtw%cldes   ), ' (', TRIM(sn_snd_crtw%clcat   ), ')' 
     
    746747      !                                                      !          CO2 flux         ! 
    747748      !                                                      ! ------------------------- ! 
    748       ssnd(jps_co2)%clname = 'O_CO2FLX' ;  IF( TRIM(sn_snd_co2%cldes) == 'coupled' )    ssnd(jps_co2 )%laction = .TRUE. 
     749      ssnd(jps_co2)%clname  = 'O_CO2FLX' ;  IF( TRIM(sn_snd_co2%cldes) == 'coupled' )    ssnd(jps_co2 )%laction = .TRUE. 
    749750 
    750751      !                                                      ! ------------------------- ! 
    751752      !                                                      !     Sea surface height    ! 
    752753      !                                                      ! ------------------------- ! 
    753       ssnd(jps_ssh)%clname = 'O_SSHght' ;  IF( TRIM(sn_snd_ssh%cldes) == 'coupled' )    ssnd(jps_ssh )%laction = .TRUE. 
     754      ssnd(jps_wlev)%clname = 'O_Wlevel' ;  IF( TRIM(sn_snd_wlev%cldes) == 'coupled' )   ssnd(jps_wlev)%laction = .TRUE. 
    754755 
    755756      !                                                      ! ------------------------------- ! 
    756757      !                                                      !   OPA-SAS coupling - snd by opa !    
    757758      !                                                      ! ------------------------------- ! 
     759      ssnd(jps_ssh   )%clname = 'O_SSHght' 
    758760      ssnd(jps_soce  )%clname = 'O_SSSal'  
    759761      ssnd(jps_e3t1st)%clname = 'O_E3T1st'    
     
    10581060      IF( srcv(jpr_co2)%laction )   atm_co2(:,:) = frcv(jpr_co2)%z3(:,:,1) 
    10591061#endif 
     1062      ! 
     1063      !                                                      ! ========================= ! 
     1064      !                                                      ! Mean Sea Level Pressure   !   (taum) 
     1065      !                                                      ! ========================= ! 
     1066      ! 
     1067      IF( srcv(jpr_mslp)%laction ) THEN                    ! UKMO SHELF effect of atmospheric pressure on SSH 
     1068         IF( kt /= nit000 )   ssh_ibb(:,:) = ssh_ib(:,:)    !* Swap of ssh_ib fields 
     1069 
     1070         r1_grau = 1.e0 / (grav * rau0)               !* constant for optimization 
     1071         ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rpref ) * r1_grau    ! equivalent ssh (inverse barometer) 
     1072         apr   (:,:) =     frcv(jpr_mslp)%z3(:,:,1)                        !atmospheric pressure 
     1073 
     1074         IF( kt == nit000 ) ssh_ibb(:,:) = ssh_ib(:,:)  ! correct this later (read from restart if possible) 
     1075      END IF 
    10601076 
    10611077      !  Fields received by SAS when OASIS coupling 
     
    11741190      ! 
    11751191      CALL wrk_dealloc( jpi,jpj, ztx, zty, zmsk, zemp, zqns, zqsr ) 
    1176       ! 
    1177       !                                                      ! ========================= ! 
    1178       !                                                      ! Mean Sea Level Pressure   !   (taum) 
    1179       !                                                      ! ========================= ! 
    1180       ! 
    1181       IF( srcv(jpr_mslp)%laction ) THEN                    ! UKMO SHELF effect of atmospheric pressure on SSH 
    1182          IF( kt /= nit000 )   ssh_ibb(:,:) = ssh_ib(:,:)    !* Swap of ssh_ib fields 
    1183  
    1184          r1_grau = 1.e0 / (grav * rau0)               !* constant for optimization 
    1185          ssh_ib(:,:) = - ( frcv(jpr_mslp)%z3(:,:,1) - rpref ) * r1_grau    ! equivalent ssh (inverse barometer) 
    1186          apr   (:,:) =     frcv(jpr_mslp)%z3(:,:,1)                        !atmospheric pressure 
    1187  
    1188          IF( kt == nit000 ) ssh_ibb(:,:) = ssh_ib(:,:)  ! correct this later (read from restart if possible) 
    1189       END IF 
    1190  
    11911192      ! 
    11921193      IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_rcv') 
     
    21942195           CALL cpl_snd( jps_ficet, isec, RESHAPE ( fr_i, (/jpi,jpj,1/) ), info ) 
    21952196      END IF 
     2197      !                                                      ! ------------------------- ! 
     2198      !                                                      !   Water levels to waves   ! 
     2199      !                                                      ! ------------------------- ! 
     2200      IF( ssnd(jps_wlev)%laction ) THEN 
     2201           IF( ln_apr_dyn ) THEN  
     2202               IF( kt /= nit000 ) THEN  
     2203                   ztmp1(:,:) = sshb(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) )  
     2204               ELSE  
     2205                   ztmp1(:,:) = sshb(:,:)  
     2206               ENDIF  
     2207           ELSE  
     2208               ztmp1(:,:) = sshn(:,:)  
     2209           ENDIF  
     2210           ! add the bathymetry - we need to send the total height of the water column 
     2211           ztmp1(:,:) = ztmp1(:,:) + bathy(:,:)  
     2212           CALL cpl_snd( jps_wlev  , isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info ) 
     2213      END IF 
    21962214      ! 
    21972215      !  Fields sent by OPA to SAS when doing OPA<->SAS coupling 
     
    22002218         !                          ! removed inverse barometer ssh when Patm 
    22012219         !                          forcing is used (for sea-ice dynamics) 
    2202          IF( ln_apr_dyn ) THEN 
    2203              IF( kt /= nit000 ) THEN 
    2204                  ztmp1(:,:) = sshb(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
    2205              ELSE 
    2206                  ztmp1(:,:) = sshb(:,:) 
    2207              ENDIF 
    2208          ELSE 
    2209              ztmp1(:,:) = sshn(:,:) 
     2220         IF( ln_apr_dyn ) THEN   ;   ztmp1(:,:) = sshb(:,:) - 0.5 * ( ssh_ib(:,:) + ssh_ibb(:,:) ) 
     2221         ELSE                    ;   ztmp1(:,:) = sshn(:,:) 
    22102222         ENDIF 
    22112223         CALL cpl_snd( jps_ssh   , isec, RESHAPE ( ztmp1            , (/jpi,jpj,1/) ), info ) 
Note: See TracChangeset for help on using the changeset viewer.