Changeset 8819


Ignore:
Timestamp:
2017-11-27T14:24:20+01:00 (3 years ago)
Author:
jamrae
Message:

Implemented code to pass sea ice skin roughness length to atmosphere.

Location:
branches/UKMO/dev_r5518_GO6_package_r8356_plus_form_drag/NEMOGCM/NEMO/OPA_SRC/SBC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_r8356_plus_form_drag/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90

    r8384 r8819  
    116116   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  a_i 
    117117   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  ht_i, ht_s 
    118    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  fmdice 
     118   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::  fmdice, rough_ice_skin 
    119119#endif 
    120120 
     
    176176#if defined key_cice || defined key_lim2 
    177177      IF( ln_cpl )   ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(5) ) 
    178       IF( ln_cpl )   ALLOCATE( fmdice(jpi,jpj) , STAT=ierr(5) )  
     178      IF( ln_cpl )   ALLOCATE( fmdice(jpi,jpj) , rough_ice_skin(jpi,jpj) , STAT=ierr(5) )  
    179179#endif 
    180180 
  • branches/UKMO/dev_r5518_GO6_package_r8356_plus_form_drag/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r8670 r8819  
    150150   INTEGER, PARAMETER ::   jps_bio_chloro = 36        ! MEDUSA chlorophyll surface concentration 
    151151   INTEGER, PARAMETER ::   jps_fmdice = 37            ! ice form drag 
    152    INTEGER, PARAMETER ::   jpsnd      = 37            ! total number of fields sent 
     152   INTEGER, PARAMETER ::   jps_rough_ice_skin = 38    ! ice skin roughness length 
     153   INTEGER, PARAMETER ::   jpsnd      = 38            ! total number of fields sent 
    153154 
    154155   REAL(wp), PARAMETER :: dms_unit_conv = 1.0e+6      ! Coversion factor to get outgong DMS in standard units for coupling 
     
    164165   END TYPE FLD_C 
    165166   ! Send to the atmosphere                           ! 
    166    TYPE(FLD_C) ::   sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2, sn_snd_cond, sn_snd_mpnd, sn_snd_sstfrz, sn_snd_thick1, sn_snd_fmd 
     167   TYPE(FLD_C) ::   sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2, sn_snd_cond, sn_snd_mpnd, sn_snd_sstfrz, sn_snd_thick1, sn_snd_icerough 
    167168   TYPE(FLD_C) ::   sn_snd_bio_co2, sn_snd_bio_dms, sn_snd_bio_chloro                    
    168169 
     
    242243      !! 
    243244      NAMELIST/namsbc_cpl/  sn_snd_temp, sn_snd_alb   , sn_snd_thick , sn_snd_crt   , sn_snd_co2,     & 
    244          &                  sn_snd_cond, sn_snd_mpnd  , sn_snd_sstfrz, sn_snd_thick1, sn_snd_fmd,     & 
     245         &                  sn_snd_cond, sn_snd_mpnd  , sn_snd_sstfrz, sn_snd_thick1, sn_snd_icerough,& 
    245246         &                  sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau   , sn_rcv_dqnsdt, sn_rcv_qsr,     & 
    246247         &                  sn_rcv_qns , sn_rcv_emp   , sn_rcv_rnf   , sn_rcv_cal   , sn_rcv_iceflx,  & 
     
    315316         WRITE(numout,*)'      meltponds fraction & depth      = ', TRIM(sn_snd_mpnd%cldes  ), ' (', TRIM(sn_snd_mpnd%clcat   ), ')' 
    316317         WRITE(numout,*)'      sea surface freezing temp       = ', TRIM(sn_snd_sstfrz%cldes   ), ' (', TRIM(sn_snd_sstfrz%clcat   ), ')' 
    317          WRITE(numout,*)'      ice formdrag                    = ', TRIM(sn_snd_fmd%cldes   ), ' (', TRIM(sn_snd_fmd%clcat   ), ')' 
     318         WRITE(numout,*)'      ice formdrag                    = ', TRIM(sn_snd_icerough%cldes   ), ' (', TRIM(sn_snd_icerough%clcat   ), ')' 
    318319 
    319320         WRITE(numout,*)'  nn_cplmodel                         = ', nn_cplmodel 
     
    875876      !                                                      ! ------------------------- ! 
    876877      ssnd(jps_fmdice )%clname = 'OIceFmd' 
    877       SELECT CASE ( TRIM( sn_snd_fmd%cldes ) ) 
     878      ssnd(jps_rough_ice_skin )%clname = 'ORghIcSk' 
     879      SELECT CASE ( TRIM( sn_snd_icerough%cldes ) ) 
    878880         CASE ( 'none' ) 
    879881            ssnd(jps_fmdice)%laction = .FALSE. 
     882            ssnd(jps_rough_ice_skin)%laction = .FALSE. 
    880883         CASE ( 'ice', 'weighted ice' )  
    881884            ssnd(jps_fmdice)%laction = .TRUE. 
    882          CASE default   ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_fmd%cldes' ) 
     885            ssnd(jps_rough_ice_skin)%laction = .TRUE. 
     886         CASE default   ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_snd_icerough%cldes' ) 
    883887      END SELECT 
    884888      ! 
     
    26402644#if defined key_cice 
    26412645      IF( ssnd(jps_fmdice)%laction ) THEN 
    2642           SELECT CASE( sn_snd_fmd%cldes ) 
     2646          SELECT CASE( sn_snd_icerough%cldes ) 
    26432647             CASE( 'ice' ) 
    26442648                ztmp1(:,:) = fmdice(:,:) 
    26452649             CASE( 'weighted ice' )  
    26462650                ztmp1(:,:) = fmdice(:,:) * fr_i(:,:) 
    2647              CASE default      ;  CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_fmd%cldes' ) 
     2651             CASE default      ;  CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_icerough%cldes' ) 
    26482652          END SELECT 
    26492653      ENDIF 
    26502654      IF( ssnd(jps_fmdice)%laction )   CALL cpl_snd( jps_fmdice, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info )  
     2655 
     2656      IF( ssnd(jps_rough_ice_skin)%laction ) THEN 
     2657          SELECT CASE( sn_snd_icerough%cldes ) 
     2658             CASE( 'ice' ) 
     2659                ztmp1(:,:) = rough_ice_skin(:,:) 
     2660             CASE( 'weighted ice' )  
     2661                ztmp1(:,:) = rough_ice_skin(:,:) * fr_i(:,:) 
     2662             CASE default      ;  CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_icerough%cldes' ) 
     2663          END SELECT 
     2664      ENDIF 
     2665      IF( ssnd(jps_rough_ice_skin)%laction )   CALL cpl_snd( jps_rough_ice_skin, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info )  
    26512666#endif 
    26522667      ! 
  • branches/UKMO/dev_r5518_GO6_package_r8356_plus_form_drag/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r8670 r8819  
    6868#endif 
    6969   USE ice_forcing, only: frcvdr,frcvdf,frcidr,frcidf 
    70    USE ice_atmo, only: calc_strair, z0atm 
     70   USE ice_atmo, only: calc_strair, z0atm, z0atmskin 
    7171 
    7272   USE CICE_InitMod 
     
    187187      CALL CICE_Initialize 
    188188 
    189       IF(lwp) THEN                        ! control print 
    190         WRITE(numout,*) 
    191         WRITE(numout,*)'=============================================================' 
    192         WRITE(numout,*)'In cice_sbc_init, after call to CICE_Initialize' 
    193         WRITE(numout,*)'MAXVAL(z0atm): ', MAXVAL(z0atm) 
    194         WRITE(numout,*)'MAXLOC(z0atm): ', MAXLOC(z0atm) 
    195         WRITE(numout,*)'MINVAL(z0atm): ', MINVAL(z0atm) 
    196         WRITE(numout,*)'MINLOC(z0atm): ', MINLOC(z0atm) 
    197         WRITE(numout,*)'=============================================================' 
    198         WRITE(numout,*) 
    199       ENDIF 
    200  
    201189      ! Do some CICE consistency checks 
    202190      IF ( (ksbc == jp_flx) .OR. (ksbc == jp_purecpl) ) THEN 
     
    272260 
    273261      CALL cice2nemo(z0atm,fmdice,'T', 1. ) 
     262      CALL cice2nemo(z0atmskin,rough_ice_skin,'T', 1. ) 
    274263 
    275264      IF( .NOT. ln_rstart ) THEN 
     
    323312      IF( nn_timing == 1 )  CALL timing_stop('cice_sbc_init') 
    324313      ! 
     314 
     315 
     316      IF(lwp) THEN                        ! control print 
     317        WRITE(numout,*) 
     318        WRITE(numout,*)'=============================================================' 
     319        WRITE(numout,*)'At end of subroutine cice_sbc_init' 
     320        WRITE(numout,*)'MAXVAL(z0atm): ', MAXVAL(z0atm) 
     321        WRITE(numout,*)'MAXLOC(z0atm): ', MAXLOC(z0atm) 
     322        WRITE(numout,*)'MINVAL(z0atm): ', MINVAL(z0atm) 
     323        WRITE(numout,*)'MINLOC(z0atm): ', MINLOC(z0atm) 
     324        WRITE(numout,*)'MAXVAL(z0atmskin): ', MAXVAL(z0atmskin) 
     325        WRITE(numout,*)'MAXLOC(z0atmskin): ', MAXLOC(z0atmskin) 
     326        WRITE(numout,*)'MINVAL(z0atmskin): ', MINVAL(z0atmskin) 
     327        WRITE(numout,*)'MINLOC(z0atmskin): ', MINLOC(z0atmskin) 
     328        WRITE(numout,*)'=============================================================' 
     329        WRITE(numout,*) 
     330      ENDIF 
     331 
     332 
     333 
    325334   END SUBROUTINE cice_sbc_init 
    326335 
     
    803812      CALL cice2nemo(z0atm,fmdice,'T', 1. ) 
    804813 
     814! Surface skin roughness length 
     815      CALL cice2nemo(z0atmskin,rough_ice_skin,'T', 1. ) 
     816 
    805817      ! 
    806818      IF( nn_timing == 1 )  CALL timing_stop('cice_sbc_hadgam') 
  • branches/UKMO/dev_r5518_GO6_package_r8356_plus_form_drag/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r8280 r8819  
    306306      ! 
    307307      IF( nn_ice == 3      )   CALL sbc_lim_init               ! LIM3 initialisation 
    308  
    309308      IF( nn_ice == 4      )   CALL cice_sbc_init( nsbc )      ! CICE initialisation 
    310        
     309 
    311310   END SUBROUTINE sbc_init 
    312311 
Note: See TracChangeset for help on using the changeset viewer.