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 5846 for branches – NEMO

Changeset 5846 for branches


Ignore:
Timestamp:
2015-11-02T10:42:20+01:00 (8 years ago)
Author:
jcastill
Message:

Changes as in vn3.4_WWIII/vn3.4_ww3_coupling

File:
1 edited

Legend:

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

    r5844 r5846  
    105105   INTEGER, PARAMETER ::   jpr_e3t1st = 41            ! first T level thickness  
    106106   INTEGER, PARAMETER ::   jpr_fraqsr = 42            ! fraction of solar net radiation absorbed in the first ocean level 
     107#if defined key_ww3 
     108   INTEGER, PARAMETER ::   jpr_hsig   = 43            ! Hsig 
     109   INTEGER, PARAMETER ::   jpr_phioc  = 44            ! Wave=>ocean energy flux 
     110   INTEGER, PARAMETER ::   jprcv      = 44            ! total number of fields received  
     111#else 
    107112   INTEGER, PARAMETER ::   jprcv      = 42            ! total number of fields received 
     113#ENDIF 
    108114 
    109115   INTEGER, PARAMETER ::   jps_fice   =  1            ! ice fraction sent to the atmosphere 
     
    135141   INTEGER, PARAMETER ::   jps_e3t1st = 27            ! first level depth (vvl) 
    136142   INTEGER, PARAMETER ::   jps_fraqsr = 28            ! fraction of solar net radiation absorbed in the first ocean level 
     143#if defined key_ww3 
     144   INTEGER, PARAMETER ::   jps_ficet  = 29            ! total ice fraction  
     145   INTEGER, PARAMETER ::   jps_ocxw   = 30            ! currents on grid 1  
     146   INTEGER, PARAMETER ::   jps_ocyw   = 31            ! currents on grid 1  
     147   INTEGER, PARAMETER ::   jpsnd      = 31            ! total number of fields sended 
     148#else 
    137149   INTEGER, PARAMETER ::   jpsnd      = 28            ! total number of fields sended 
     150#endif 
    138151 
    139152   !                                                         !!** namelist namsbc_cpl ** 
     
    150163   TYPE(FLD_C) ::   sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau, sn_rcv_dqnsdt, sn_rcv_qsr, sn_rcv_qns, sn_rcv_emp, sn_rcv_rnf 
    151164   TYPE(FLD_C) ::   sn_rcv_cal, sn_rcv_iceflx, sn_rcv_co2                         
     165   ! Send to waves 
     166   TYPE(FLD_C) ::   sn_snd_ifrac, sn_snd_crtw 
     167   ! Received from waves 
     168   TYPE(FLD_C) ::   sn_rcv_hsig,sn_rcv_phioc 
    152169   ! Other namelist parameters                        ! 
    153170   INTEGER     ::   nn_cplmodel            ! Maximum number of models to/from which NEMO is potentialy sending/receiving data 
     
    216233      REAL(wp), POINTER, DIMENSION(:,:) ::   zacs, zaos 
    217234      !! 
    218       NAMELIST/namsbc_cpl/  sn_snd_temp, sn_snd_alb   , sn_snd_thick, sn_snd_crt   , sn_snd_co2,      & 
     235      NAMELIST/namsbc_cpl/  sn_snd_temp , sn_snd_alb  , sn_snd_thick, sn_snd_crt   , sn_snd_co2,      & 
     236         &                  sn_snd_ifrac, sn_snd_crtw ,                                               & 
    219237         &                  sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau  , sn_rcv_dqnsdt, sn_rcv_qsr,      & 
    220238         &                  sn_rcv_qns , sn_rcv_emp   , sn_rcv_rnf  , sn_rcv_cal   , sn_rcv_iceflx,   & 
    221          &                  sn_rcv_co2 , nn_cplmodel  , ln_usecplmask 
     239         &                  sn_rcv_co2 , sn_rcv_hsig  , sn_rcv_phioc, nn_cplmodel  , ln_usecplmask 
    222240      !!--------------------------------------------------------------------- 
    223241      ! 
     
    260278         WRITE(numout,*)'      sea ice heat fluxes             = ', TRIM(sn_rcv_iceflx%cldes), ' (', TRIM(sn_rcv_iceflx%clcat), ')' 
    261279         WRITE(numout,*)'      atm co2                         = ', TRIM(sn_rcv_co2%cldes   ), ' (', TRIM(sn_rcv_co2%clcat   ), ')' 
     280         WRITE(numout,*)'      significant wave heigth         = ', TRIM(sn_rcv_hsig%cldes  ), ' (', TRIM(sn_rcv_hsig%clcat  ), ')' 
     281         WRITE(numout,*)'      wave to oce energy flux         = ', TRIM(sn_rcv_phioc%cldes ), ' (', TRIM(sn_rcv_phioc%clcat ), ')' 
    262282         WRITE(numout,*)'  sent fields (multiple ice categories)' 
    263283         WRITE(numout,*)'      surface temperature             = ', TRIM(sn_snd_temp%cldes  ), ' (', TRIM(sn_snd_temp%clcat  ), ')' 
    264284         WRITE(numout,*)'      albedo                          = ', TRIM(sn_snd_alb%cldes   ), ' (', TRIM(sn_snd_alb%clcat   ), ')' 
    265285         WRITE(numout,*)'      ice/snow thickness              = ', TRIM(sn_snd_thick%cldes ), ' (', TRIM(sn_snd_thick%clcat ), ')' 
     286         WRITE(numout,*)'      total ice fraction              = ', TRIM(sn_snd_ifrac%cldes ), ' (', TRIM(sn_snd_ifrac%clcat ), ')' 
    266287         WRITE(numout,*)'      surface current                 = ', TRIM(sn_snd_crt%cldes   ), ' (', TRIM(sn_snd_crt%clcat   ), ')' 
    267288         WRITE(numout,*)'                      - referential   = ', sn_snd_crt%clvref  
     
    269290         WRITE(numout,*)'                      - mesh          = ', sn_snd_crt%clvgrd 
    270291         WRITE(numout,*)'      oce co2 flux                    = ', TRIM(sn_snd_co2%cldes   ), ' (', TRIM(sn_snd_co2%clcat   ), ')' 
     292         WRITE(numout,*)'      surface current to waves        = ', TRIM(sn_snd_crtw%cldes   ), ' (', TRIM(sn_snd_crtw%clcat   ), ')' 
     293         WRITE(numout,*)'                      - referential   = ', sn_snd_crtw%clvref 
     294         WRITE(numout,*)'                      - orientation   = ', sn_snd_crtw%clvor 
     295         WRITE(numout,*)'                      - mesh          = ', sn_snd_crtw%clvgrd 
    271296         WRITE(numout,*)'  nn_cplmodel                         = ', nn_cplmodel 
    272297         WRITE(numout,*)'  ln_usecplmask                       = ', ln_usecplmask 
     
    483508         srcv(jpr_topm:jpr_botm)%laction = .TRUE. 
    484509      ENDIF 
     510      !                                                      ! ------------------------- !                                                      ! 
     511      !                                                      !      Wave breaking        !    
     512      !                                                      ! ------------------------- ! 
     513      srcv(jpr_hsig)%clname  = 'O_Hsigwa'  ;   IF( TRIM(sn_rcv_hsig%cldes  ) == 'coupled' )   srcv(jpr_hsig)%laction = .TRUE. 
     514      srcv(jpr_phioc)%clname = 'O_PhiOce'  ;   IF( TRIM(sn_rcv_phioc%cldes ) == 'coupled' )   srcv(jpr_phioc)%laction = .TRUE. 
     515      ! 
    485516      !                                                      ! ------------------------------- ! 
    486517      !                                                      !   OPA-SAS coupling - rcv by opa !    
     
    637668      !                                                      ! ------------------------- ! 
    638669      ssnd(jps_fice)%clname = 'OIceFrc' 
     670      ssnd(jps_ficet)%clname = 'OIceFrcT' 
    639671      ssnd(jps_hice)%clname = 'OIceTck' 
    640672      ssnd(jps_hsnw)%clname = 'OSnwTck' 
     
    645677      ENDIF 
    646678       
     679      IF (TRIM( sn_snd_ifrac%cldes )  == 'coupled')  ssnd(jps_ficet)%laction = .TRUE. 
     680 
    647681      SELECT CASE ( TRIM( sn_snd_thick%cldes ) ) 
    648682      CASE( 'none'         )       ! nothing to do 
     
    665699      ssnd(jps_ocy1)%clname = 'O_OCury1'   ;   ssnd(jps_ivy1)%clname = 'O_IVely1' 
    666700      ssnd(jps_ocz1)%clname = 'O_OCurz1'   ;   ssnd(jps_ivz1)%clname = 'O_IVelz1' 
     701      ssnd(jps_ocxw)%clname = 'O_OCurxw' 
     702      ssnd(jps_ocyw)%clname = 'O_OCuryw' 
    667703      ! 
    668704      ssnd(jps_ocx1:jps_ivz1)%nsgn = -1.   ! vectors: change of the sign at the north fold 
     
    683719      CASE( 'mixed oce-ice'        )   ;   ssnd(jps_ivx1:jps_ivz1)%laction = .FALSE. 
    684720      CASE default   ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_crt%cldes' ) 
     721      END SELECT 
     722 
     723      ssnd(jps_ocxw:jps_ocyw)%nsgn = -1.   ! vectors: change of the sign at the north fold 
     724 
     725      IF( sn_snd_crtw%clvgrd == 'U,V' ) THEN 
     726         ssnd(jps_ocxw)%clgrid = 'U' ; ssnd(jps_ocyw)%clgrid = 'V' 
     727      ELSE IF( sn_snd_crtw%clvgrd /= 'T' ) THEN 
     728         CALL ctl_stop( 'sn_snd_crtw%clvgrd must be equal to T' ) 
     729      ENDIF 
     730      IF( TRIM( sn_snd_crtw%clvor ) == 'eastward-northward' ) ssnd(jps_ocxw:jps_ocyw)%nsgn = 1. 
     731      SELECT CASE( TRIM( sn_snd_crtw%cldes ) ) 
     732      CASE( 'none'                 )   ;   ssnd(jps_ocxw:jps_ocyw)%laction = .FALSE. 
     733      CASE( 'coupled'              )   ;   ssnd(jps_ocxw:jps_ocyw)%laction = .TRUE. 
     734      CASE default   ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_crtw%cldes' ) 
    685735      END SELECT 
    686736 
     
    19862036         IF( ssnd(jps_ivz1)%laction )   CALL cpl_snd( jps_ivz1, isec, RESHAPE ( zitz1, (/jpi,jpj,1/) ), info )   ! ice   z current 1st grid 
    19872037         !  
    1988       ENDIF 
    1989       ! 
     2038         !currents to wave model 
     2039         IF( ssnd(jps_ocxw)%laction )   CALL cpl_prism_snd( jps_ocxw, isec, RESHAPE ( zotx1, (/jpi,jpj,1/) ), info )   ! ocean x current 1st grid 
     2040         IF( ssnd(jps_ocyw)%laction )   CALL cpl_prism_snd( jps_ocyw, isec, RESHAPE ( zoty1, (/jpi,jpj,1/) ), info )   ! ocean y current 1st grid 
     2041         !  
     2042      ENDIF 
     2043      ! 
     2044      IF( ssnd(jps_ficet)%laction ) THEN 
     2045           CALL cpl_prism_snd( jps_ficet, isec, RESHAPE ( fr_i, (/jpi,jpj,1/) ), info ) 
     2046      END IF 
    19902047      ! 
    19912048      !  Fields sent by OPA to SAS when doing OPA<->SAS coupling 
Note: See TracChangeset for help on using the changeset viewer.