Changeset 5390


Ignore:
Timestamp:
2015-06-10T10:48:39+02:00 (5 years ago)
Author:
jamrae
Message:

Changes required for GSI7 in coupled configuration.

Location:
branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM/CONFIG/SHARED/namelist_ref

    r5213 r5390  
    350350   sn_snd_crt    =       'none'                 ,    'no'    , 'spherical' , 'eastward-northward' ,  'T' 
    351351   sn_snd_co2    =       'coupled'              ,    'no'    ,     ''      ,         ''           ,   '' 
     352   sn_snd_cond   =       'none'                 ,    'no'    ,     ''      ,         ''           ,   ''  
    352353   sn_snd_mpnd   =       'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
     354   sn_snd_sstfrz =       'none'                 ,    'no'    ,     ''      ,         ''           ,   '' 
    353355! receive 
    354356   sn_rcv_w10m   =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
  • branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90

    r5234 r5390  
    8989   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   fr_iv              !: ice fraction at NEMO V point 
    9090   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   sstfrz             !: sea surface freezing temperature 
    91     
     91   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tsfc_ice           !: sea-ice surface skin temperature (on categories) 
     92   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   kn_ice             !: sea-ice surface layer thermal conductivity (on cats) 
     93 
    9294   ! variables used in the coupled interface 
    9395   INTEGER , PUBLIC, PARAMETER ::   jpl = ncat 
     
    150152         &                     v_ice(jpi,jpj)        , fr2_i0(jpi,jpj)       , alb_ice(jpi,jpj,1)    , & 
    151153         &                     emp_ice(jpi,jpj)      , qns_ice(jpi,jpj,1)    , dqns_ice(jpi,jpj,1)   , & 
    152          &                     a_p(jpi,jpj,jpl)      , ht_p(jpi,jpj,jpl)     , STAT=ierr(2) ) 
     154         &                     a_p(jpi,jpj,jpl)      , ht_p(jpi,jpj,jpl)     , tsfc_ice(jpi,jpj,jpl) , & 
     155         &                     kn_ice(jpi,jpj,jpl) ,    STAT=ierr(2) ) 
    153156       
    154157#endif 
  • branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r5377 r5390  
    107107   INTEGER, PARAMETER ::   jps_a_p    = 16            ! meltpond fraction   
    108108   INTEGER, PARAMETER ::   jps_ht_p   = 17            ! meltpond depth (m)  
    109    INTEGER, PARAMETER ::   jpsnd      = 18            ! total number of fields sent 
     109   INTEGER, PARAMETER ::   jps_kice   = 18            ! ice surface layer thermal conductivity 
     110   INTEGER, PARAMETER ::   jps_sstfrz = 19            ! sea-surface freezing temperature 
     111   INTEGER, PARAMETER ::   jpsnd      = 19            ! total number of fields sent 
    110112   !                                                         !!** namelist namsbc_cpl ** 
    111113   TYPE ::   FLD_C 
     
    117119   END TYPE FLD_C 
    118120   ! Send to the atmosphere                           ! 
    119    TYPE(FLD_C) ::   sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2, sn_snd_mpnd 
     121   TYPE(FLD_C) ::   sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2, sn_snd_mpnd, sn_snd_cond, ssn_snd_sstfrz 
     122 
    120123   ! Received from the atmosphere                     ! 
    121124   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 
     
    241244         WRITE(numout,*)'                      - mesh          = ', sn_snd_crt%clvgrd 
    242245         WRITE(numout,*)'      oce co2 flux                    = ', TRIM(sn_snd_co2%cldes   ), ' (', TRIM(sn_snd_co2%clcat   ), ')' 
     246         WRITE(numout,*)'      ice effective conductivity      = ', TRIM(sn_snd_cond%cldes   ), ' (', TRIM(sn_snd_cond%clcat   ), ')' 
    243247         WRITE(numout,*)'      meltponds fraction & depth      = ', TRIM(sn_snd_mpnd%cldes  ), ' (', TRIM(sn_snd_mpnd%clcat   ), ')' 
     248         WRITE(numout,*)'      sea surface freezing temp       = ', TRIM(sn_snd_sstfrz%cldes   ), ' (', TRIM(sn_snd_sstfrz%clcat   ), ')' 
     249 
    244250         WRITE(numout,*)'  nn_cplmodel                         = ', nn_cplmodel 
    245251         WRITE(numout,*)'  ln_usecplmask                       = ', ln_usecplmask 
     
    356362      srcv(jpr_snow)%clname = 'OTotSnow'      ! Snow = solid precipitation 
    357363      srcv(jpr_tevp)%clname = 'OTotEvap'      ! total evaporation (over oce + ice sublimation) 
    358       srcv(jpr_ievp)%clname = 'OIceEvap'      ! evaporation over ice = sublimation 
     364      srcv(jpr_ievp)%clname = 'OIceEvp'      ! evaporation over ice = sublimation 
    359365      srcv(jpr_sbpr)%clname = 'OSubMPre'      ! sublimation - liquid precipitation - solid precipitation  
    360366      srcv(jpr_semp)%clname = 'OISubMSn'      ! ice solid water budget = sublimation - solid precipitation 
     
    490496      !                                                      ! ------------------------- ! 
    491497      ssnd(jps_toce)%clname = 'O_SSTSST' 
    492       ssnd(jps_tice)%clname = 'O_TepIce' 
     498      ssnd(jps_tice)%clname = 'OTepIce' 
    493499      ssnd(jps_tmix)%clname = 'O_TepMix' 
    494500      SELECT CASE( TRIM( sn_snd_temp%cldes ) ) 
     
    498504         ssnd( (/jps_toce, jps_tice/) )%laction = .TRUE. 
    499505         IF ( TRIM( sn_snd_temp%clcat ) == 'yes' )  ssnd(jps_tice)%nct = jpl 
     506      CASE ( 'oce and ice' ) 
     507         ssnd( (/jps_toce, jps_tice/) )%laction = .TRUE. 
     508         IF ( TRIM( sn_snd_temp%clcat ) == 'yes' ) THEN 
     509            ssnd(jps_tice)%nct = jpl 
     510         ELSE 
     511            IF ( jpl > 1 ) THEN 
     512               CALL ctl_stop( 'sbc_cpl_init: use weighted oce and ice option for sn_snd_temp%cldes if not exchanging category fields' ) 
     513            ENDIF 
     514         ENDIF 
    500515      CASE( 'mixed oce-ice'        )   ;   ssnd(   jps_tmix             )%laction = .TRUE. 
    501516      CASE default   ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_temp%cldes' ) 
     
    622637      !                                                      ! ------------------------- ! 
    623638      ssnd(jps_co2)%clname = 'O_CO2FLX' ;  IF( TRIM(sn_snd_co2%cldes) == 'coupled' )    ssnd(jps_co2 )%laction = .TRUE. 
     639      ! 
     640 
     641 
     642      !                                                      ! ------------------------- ! 
     643      !                                                      ! Sea surface freezing temp ! 
     644      !                                                      ! ------------------------- ! 
     645      ssnd(jps_sstfrz)%clname = 'O_SSTFrz' ; IF( TRIM(sn_snd_sstfrz%cldes) == 'coupled' )  ssnd(jps_sstfrz)%laction = .TRUE. 
     646      ! 
     647      !                                                      ! ------------------------- ! 
     648      !                                                      !    Ice conductivity       ! 
     649      !                                                      ! ------------------------- ! 
     650      ! Note that ultimately we will move to passing an ocean effective conductivity as well so there 
     651      ! will be some changes to the parts of the code which currently relate only to ice conductivity 
     652      ssnd(jps_kice )%clname = 'OIceKn' 
     653      SELECT CASE ( TRIM( sn_snd_cond%cldes ) ) 
     654      CASE ( 'none' ) 
     655         ssnd(jps_kice)%laction = .FALSE. 
     656      CASE ( 'ice only' ) 
     657         ssnd(jps_kice)%laction = .TRUE. 
     658         IF ( TRIM( sn_snd_cond%clcat ) == 'yes' ) THEN 
     659            ssnd(jps_kice)%nct = jpl 
     660         ELSE 
     661            IF ( jpl > 1 ) THEN 
     662               CALL ctl_stop( 'sbc_cpl_init: use weighted ice option for sn_snd_cond%cldes if not exchanging category fields' ) 
     663            ENDIF 
     664         ENDIF 
     665      CASE ( 'weighted ice' ) 
     666         ssnd(jps_kice)%laction = .TRUE. 
     667         IF ( TRIM( sn_snd_cond%clcat ) == 'yes' ) ssnd(jps_kice)%nct = jpl 
     668      CASE default   ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_cond%cldes' ) 
     669      END SELECT 
    624670      ! 
    625671      ! ================================ ! 
     
    843889#if defined key_cice && ! defined key_cice4 
    844890      !  ! Sea ice surface skin temp: 
    845       ! Use tn_ice for this as it's not used for anything else in cice case 
    846891      IF( srcv(jpr_ts_ice)%laction ) THEN 
    847892        DO jl = 1, jpl 
     
    849894            DO ji = 1, jpi 
    850895              IF (frcv(jpr_ts_ice)%z3(ji,jj,jl) > 0.0) THEN 
    851                 tn_ice(ji,jj,jl) = 0.0 
     896                tsfc_ice(ji,jj,jl) = 0.0 
    852897              ELSE IF (frcv(jpr_ts_ice)%z3(ji,jj,jl) < -60.0) THEN 
    853                 tn_ice(ji,jj,jl) = -60.0 
     898                tsfc_ice(ji,jj,jl) = -60.0 
    854899              ELSE 
    855                 tn_ice(ji,jj,jl) = frcv(jpr_ts_ice)%z3(ji,jj,jl) 
     900                tsfc_ice(ji,jj,jl) = frcv(jpr_ts_ice)%z3(ji,jj,jl) 
    856901              ENDIF 
    857902            END DO 
     
    15461591         IF( ssnd(jps_a_p)%laction )   CALL cpl_snd( jps_a_p, isec, ztmp3, info )     
    15471592         IF( ssnd(jps_ht_p)%laction )   CALL cpl_snd( jps_ht_p, isec, ztmp4, info )     
     1593         ! 
     1594         ! Send ice effective conductivity 
     1595         SELECT CASE( sn_snd_cond%cldes) 
     1596         CASE( 'weighted ice' )    
     1597            SELECT CASE( sn_snd_cond%clcat ) 
     1598            CASE( 'yes' )    
     1599               ztmp3(:,:,1:jpl) =  kn_ice(:,:,1:jpl) * a_i(:,:,1:jpl) 
     1600            CASE( 'no' ) 
     1601               ztmp3(:,:,:) = 0.0 
     1602               DO jl=1,jpl 
     1603                 ztmp3(:,:,1) = ztmp3(:,:,1) + kn_ice(:,:,jl) * a_i(:,:,jl) 
     1604               ENDDO 
     1605            CASE default                  ;   CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_cond%clcat' ) 
     1606            END SELECT 
     1607         CASE( 'ice only' )    
     1608           ztmp3(:,:,1:jpl) = kn_ice(:,:,1:jpl) 
     1609         END SELECT 
     1610         IF( ssnd(jps_kice)%laction )   CALL cpl_prism_snd( jps_kice, isec, ztmp3, info ) 
    15481611      ENDIF 
    15491612      ! 
     
    16861749      ENDIF 
    16871750      ! 
     1751      ztmp1(:,:) = sstfrz(:,:) + rt0 
     1752      IF( ssnd(jps_sstfrz)%laction )  CALL cpl_prism_snd( jps_sstfrz, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info ) 
     1753      ! 
    16881754      CALL wrk_dealloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 
    16891755      CALL wrk_dealloc( jpi,jpj,jpl, ztmp3, ztmp4 ) 
  • branches/UKMO/dev_r5377_UKMO1_CICE_coupling_GSI7/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r5162 r5390  
    1616   USE domvvl 
    1717   USE eosbn2, only : eos_fzp ! Function to calculate freezing point of seawater 
    18    USE phycst, only : rcp, rau0, r1_rau0, rhosn, rhoic 
     18   USE phycst, only : rcp, rau0, r1_rau0, rhosn, rhoic, rt0 
    1919   USE in_out_manager  ! I/O manager 
    2020   USE iom, ONLY : iom_put,iom_use              ! I/O manager library !!Joakim edit 
     
    3939   USE ice_calendar, only: dt 
    4040# if defined key_cice4 
    41    USE ice_state, only: aice,aicen,uvel,vvel,vsno,vsnon,vice,vicen 
     41   USE ice_state, only: aice,aicen,uvel,vvel,vsno,vsnon,vice,vicen, & 
     42                        nt_Tsfc 
    4243   USE ice_flux, only: strax,stray,strocnx,strocny,frain,fsnow,  & 
    4344                sst,sss,uocn,vocn,ss_tltx,ss_tlty,fsalt_gbm,     & 
     
    4546                flatn_f,fsurfn_f,fcondtopn_f,                    & 
    4647                uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl,   & 
    47                 swvdr,swvdf,swidr,swidf,Tf 
     48                swvdr,swvdf,swidr,swidf,Tf              !!!   & 
     49!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     50!!! LINE BELOW COMMENTED OUT TEMPORARILY UNTIL CICE MULTILAYERS  !!! 
     51!!! BRANCH CAN BE INCLUDED AT CICE5.                             !!! 
     52!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     53!!              ,keffn_top,Tn_top 
     54!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     55!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
     56 
    4857   USE ice_therm_vertical, only: calc_Tsfc 
    4958#else 
     
    5665                uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl,   & 
    5766                swvdr,swvdf,swidr,swidf,Tf 
    58    USE ice_therm_shared, only: calc_Tsfc 
     67   USE ice_therm_shared, only: calc_Tsfc, heat_capacity 
    5968   USE ice_shortwave, only: apeffn 
    6069#endif 
     
    453462      CALL nemo2cice(sss_m,sss,'T', 1. ) 
    454463 
     464! Sea ice surface skin temperature 
     465      DO jpl=1,ncat 
     466        CALL nemo2cice(tsfc_ice(:,:,jpl), trcrn(:,:,nt_tsfc,jpl,:),'T',1.) 
     467      ENDDO  
     468 
    455469! x comp and y comp of surface ocean current 
    456470! U point to F point 
     
    727741      ENDDO 
    728742#endif 
     743 
     744 
     745! If using multilayers thermodynamics in CICE then get top layer temperature 
     746! and effective conductivity        
     747!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     748!!!!! LINES COMMENTED OUT UNTIL CICE MULTILAYERS BRANCH IS IMPLEMENTED  
     749!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
     750!!      IF (heat_capacity) THEN 
     751!!         DO jpl = 1,ncat 
     752!!            CALL cice2nemo(Tn_top(:,:,jpl,:),tn_ice(:,:,jpl),'T', 1. ) 
     753!!            CALL cice2nemo(keffn_top(:,:,jpl,:),kn_ice(:,:,jpl),'T', 1. ) 
     754!!         ENDDO 
     755!!! Convert surface temperature to Kelvin 
     756!!         tn_ice(:,:,:)=tn_ice(:,:,:)+rt0 
     757!!      ELSE 
     758!!         tn_ice(:,:,:) = 0.0 
     759!!         kn_ice(:,:,:) = 0.0 
     760!!      ENDIF        
     761!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 
     762!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
    729763 
    730764      ! 
Note: See TracChangeset for help on using the changeset viewer.