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 5030 for branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90 – NEMO

Ignore:
Timestamp:
2015-01-14T17:45:17+01:00 (9 years ago)
Author:
timgraham
Message:

Added changes for coupling of meltpond fraction and depth between NEMO-CICE and atmosphere model

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r5026 r5030  
    104104   INTEGER, PARAMETER ::   jps_ivz1   = 14            ! 
    105105   INTEGER, PARAMETER ::   jps_co2    = 15 
    106    INTEGER, PARAMETER ::   jpsnd      = 15            ! total number of fields sended 
    107  
     106   INTEGER, PARAMETER ::   jps_a_p    = 16            ! meltpond fraction   
     107   INTEGER, PARAMETER ::   jps_ht_p   = 17            ! meltpond depth (m)  
     108   INTEGER, PARAMETER ::   jpsnd      = 18            ! total number of fields sended 
    108109   !                                                         !!** namelist namsbc_cpl ** 
    109110   TYPE ::   FLD_C 
     
    115116   END TYPE FLD_C 
    116117   ! Send to the atmosphere                           ! 
    117    TYPE(FLD_C) ::   sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2                         
     118   TYPE(FLD_C) ::   sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2, sn_snd_mpnd 
    118119   ! Received from the atmosphere                     ! 
    119120   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 
     
    238239         WRITE(numout,*)'                      - mesh          = ', sn_snd_crt%clvgrd 
    239240         WRITE(numout,*)'      oce co2 flux                    = ', TRIM(sn_snd_co2%cldes   ), ' (', TRIM(sn_snd_co2%clcat   ), ')' 
     241         WRITE(numout,*)'      meltponds fraction & depth      = ', TRIM(sn_snd_mpnd%cldes  ), ' (', TRIM(sn_snd_mpnd%clcat   ), ')' 
    240242         WRITE(numout,*)'  nn_cplmodel                         = ', nn_cplmodel 
    241243         WRITE(numout,*)'  ln_usecplmask                       = ', ln_usecplmask 
     
    508510 
    509511      !                                                      ! ------------------------- ! 
    510       !                                                      !  Ice fraction & Thickness !  
     512      !                                                      !  Ice fraction & Thickness  
    511513      !                                                      ! ------------------------- ! 
    512514      ssnd(jps_fice)%clname = 'OIceFrc' 
    513515      ssnd(jps_hice)%clname = 'OIceTck' 
    514516      ssnd(jps_hsnw)%clname = 'OSnwTck' 
     517      ssnd(jps_a_p)%clname  = 'OPndFrc' 
     518      ssnd(jps_ht_p)%clname = 'OPndTck' 
    515519      IF( k_ice /= 0 ) THEN 
    516520         ssnd(jps_fice)%laction = .TRUE.                  ! if ice treated in the ocean (even in climato case) 
     
    535539      CASE default   ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_thick%cldes' ) 
    536540      END SELECT 
     541 
     542      !                                                      ! ------------------------- ! 
     543      !                                                      ! Ice Meltponds             ! 
     544      !                                                      ! ------------------------- ! 
     545#if defined key_cice && ! defined key_cice4 
     546      ! Meltponds only CICE5  
     547      ssnd(jps_a_p)%clname = 'OPndFrc'    
     548      ssnd(jps_ht_p)%clname = 'OPndTck'    
     549      SELECT CASE ( TRIM( sn_snd_mpnd%cldes ) ) 
     550      CASE ( 'none' ) 
     551         ssnd(jps_a_p)%laction = .FALSE. 
     552         ssnd(jps_ht_p)%laction = .FALSE. 
     553      CASE ( 'ice only' )  
     554         ssnd(jps_a_p)%laction = .TRUE. 
     555         ssnd(jps_ht_p)%laction = .TRUE. 
     556         IF ( TRIM( sn_snd_mpnd%clcat ) == 'yes' ) THEN 
     557            ssnd(jps_a_p)%nct = jpl 
     558            ssnd(jps_ht_p)%nct = jpl 
     559         ELSE 
     560            IF ( jpl > 1 ) THEN 
     561               CALL ctl_stop( 'sbc_cpl_init: use weighted ice option for sn_snd_mpnd%cldes if not exchanging category fields' ) 
     562            ENDIF 
     563         ENDIF 
     564      CASE ( 'weighted ice' )  
     565         ssnd(jps_a_p)%laction = .TRUE. 
     566         ssnd(jps_ht_p)%laction = .TRUE. 
     567         IF ( TRIM( sn_snd_mpnd%clcat ) == 'yes' ) THEN 
     568            ssnd(jps_a_p)%nct = jpl  
     569            ssnd(jps_ht_p)%nct = jpl  
     570         ENDIF 
     571      CASE default   ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_mpnd%cldes' ) 
     572      END SELECT 
     573#else 
     574      IF( TRIM( sn_snd_mpnd%cldes /= 'none' ) THEN 
     575         CALL ctl_stop('Meltponds can only be used with CICEv5') 
     576      ENDIF 
     577#endif 
    537578 
    538579      !                                                      ! ------------------------- ! 
     
    650691      REAL(wp) ::   zcdrag = 1.5e-3        ! drag coefficient 
    651692      REAL(wp) ::   zzx, zzy               ! temporary variables 
    652       REAL(wp), POINTER, DIMENSION(:,:) ::   ztx, zty  
     693      REAL(wp), POINTER, DIMENSION:,:) ::   ztx, zty  
    653694      !!---------------------------------------------------------------------- 
    654695      ! 
     
    14481489      ENDIF 
    14491490      ! 
     1491      ! Send meltpond fields  
     1492      SELECT CASE( sn_snd_mpnd%cldes)  
     1493      CASE( 'weighted ice' )  
     1494         SELECT CASE( sn_snd_mpnd%clcat )  
     1495         CASE( 'yes' )  
     1496            ztmp3(:,:,1:jpl) =  a_p(:,:,1:jpl) * a_i(:,:,1:jpl)  
     1497            ztmp4(:,:,1:jpl) =  ht_p(:,:,1:jpl) * a_i(:,:,1:jpl)  
     1498         CASE( 'no' )  
     1499            ztmp3(:,:,:) = 0.0  
     1500            ztmp4(:,:,:) = 0.0  
     1501            DO jl=1,jpl  
     1502              ztmp3(:,:,1) = ztmp3(:,:,1) + a_p(:,:,jpl) * a_i(:,:,jpl)  
     1503              ztmp4(:,:,1) = ztmp4(:,:,1) + ht_p(:,:,jpl) * a_i(:,:,jpl)  
     1504            ENDDO  
     1505         CASE default    ;   CALL ctl_stop( 'sbc_cpl_mpd: wrong definition of sn_snd_mpnd%clcat' )  
     1506         END SELECT  
     1507      CASE( 'ice only' )     
     1508         ztmp3(:,:,1:jpl) = a_p(:,:,1:jpl)  
     1509         ztmp4(:,:,1:jpl) = ht_p(:,:,1:jpl)  
     1510      END SELECT  
     1511      IF( ssnd(jps_a_p)%laction )   CALL cpl_prism_snd( jps_a_p, isec, ztmp3, info )     
     1512      IF( ssnd(jps_ht_p)%laction )   CALL cpl_prism_snd( jps_ht_p, isec, ztmp4, info )     
     1513      ! 
     1514      ! 
    14501515#if defined key_cpl_carbon_cycle 
    14511516      !                                                      ! ------------------------- ! 
Note: See TracChangeset for help on using the changeset viewer.