Changeset 5030


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

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

Location:
branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/SBC
Files:
3 edited

Legend:

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

    r5026 r5030  
    9292   INTEGER , PUBLIC, PARAMETER ::   jpl = ncat 
    9393   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   u_ice, v_ice          ! jpi, jpj 
     94   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  a_p, ht_p ! Meltpond fraction and depth 
    9495#endif 
    9596    
     
    148149         &                     v_ice(jpi,jpj)        , fr2_i0(jpi,jpj)       , alb_ice(jpi,jpj,1)    , & 
    149150         &                     emp_ice(jpi,jpj)      , qns_ice(jpi,jpj,1)    , dqns_ice(jpi,jpj,1)   , & 
    150          &                     STAT= ierr(2) ) 
     151         &                     a_p(jpi,jpj,jpl)      , ht_p(jpi,jpj,jpl)     , STAT=ierr(2) ) 
    151152       
    152153#endif 
     
    157158         ! 
    158159#if defined key_cice || defined key_lim2 
    159       IF( lk_cpl )   ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(5) ) 
     160      IF( lk_cpl ) ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(5) ) 
    160161#endif 
    161162 
  • 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      !                                                      ! ------------------------- ! 
  • branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r5026 r5030  
    3737   USE ice_gather_scatter 
    3838   USE ice_calendar, only: dt 
     39# if defined key_cice4 
    3940   USE ice_state, only: aice,aicen,uvel,vvel,vsno,vsnon,vice,vicen 
    40 # if defined key_cice4 
    4141   USE ice_flux, only: strax,stray,strocnx,strocny,frain,fsnow,  & 
    4242                sst,sss,uocn,vocn,ss_tltx,ss_tlty,fsalt_gbm,     & 
     
    4747   USE ice_therm_vertical, only: calc_Tsfc 
    4848#else 
     49   USE ice_state, only: aice,aicen,uvel,nt_hpnd,trcrn,vvel,vsno,& 
     50                vsnon,vice,vicen 
    4951   USE ice_flux, only: strax,stray,strocnx,strocny,frain,fsnow,  & 
    5052                sst,sss,uocn,vocn,ss_tltx,ss_tlty,fsalt_ai,     & 
     
    5456                swvdr,swvdf,swidr,swidf 
    5557   USE ice_therm_shared, only: calc_Tsfc 
     58   USE ice_shortwave, only: apeffn 
    5659#endif 
    5760   USE ice_forcing, only: frcvdr,frcvdf,frcidr,frcidf 
     
    702705         CALL cice2nemo(vicen(:,:,jl,:),ht_i(:,:,jl),'T', 1. ) 
    703706      ENDDO 
     707 
     708#if ! defined key_cice4 
     709! Meltpond fraction and depth 
     710      DO jl = 1,ncat 
     711         CALL cice2nemo(apeffn(:,:,jl,:),a_p(:,:,jl),'T', 1. ) 
     712         CALL cice2nemo(trcrn(:,:,jl,:),ht_p(:,:,jl),'T', 1. ) 
     713      ENDDO 
     714#endif 
     715 
    704716      ! 
    705717      IF( nn_timing == 1 )  CALL timing_stop('cice_sbc_hadgam') 
Note: See TracChangeset for help on using the changeset viewer.