Changeset 9675
- Timestamp:
- 2018-05-29T15:47:05+02:00 (6 years ago)
- Location:
- branches/UKMO/dev_merge_2017_CICE_interface/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/dev_merge_2017_CICE_interface/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r9503 r9675 42 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qns_ice !: non solar heat flux over ice [W/m2] 43 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_ice !: solar heat flux over ice [W/m2] 44 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qla_ice !: latent flux over ice [W/m2]44 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zevap_ice !: latent flux over ice [W/m2] 45 45 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dqla_ice !: latent sensibility over ice [W/m2/K] 46 46 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dqns_ice !: non solar heat flux over ice (LW+SEN+LA) [W/m2/K] 47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t n_ice !: ice surface temperature [K]47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t1_ice !: ice surface temperature [K] 48 48 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: alb_ice !: ice albedo [-] 49 49 … … 55 55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: vtau_ice !: atmos-ice v-stress. VP: I-pt ; EVP: U,V-pts [N/m2] 56 56 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_ice !: sublimation - precip over sea ice [kg/m2/s] 57 58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: topmelt !: category topmelt59 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: botmelt !: category botmelt60 57 61 58 #if defined key_lim3 … … 90 87 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sstfrz !: sea surface freezing temperature 91 88 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)89 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: cnd_ice !: sea-ice surface layer thermal conductivity (on cats) 93 90 94 91 ! variables used in the coupled interface 95 92 INTEGER , PUBLIC, PARAMETER :: jpl = ncat 96 93 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: u_ice, v_ice ! jpi, jpj 97 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_ p, ht_p ! Meltpond fraction and depth94 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_ip, v_ip ! Meltpond fraction and depth 98 95 99 96 ! … … 140 137 #if defined key_lim3 141 138 ALLOCATE( qns_ice (jpi,jpj,jpl) , qsr_ice (jpi,jpj,jpl) , & 142 & qla_ice (jpi,jpj,jpl) , dqla_ice (jpi,jpj,jpl) , &143 & dqns_ice(jpi,jpj,jpl) , t n_ice (jpi,jpj,jpl) , alb_ice (jpi,jpj,jpl) , &139 & zevap_ice (jpi,jpj,jpl) , dqla_ice (jpi,jpj,jpl) , & 140 & dqns_ice(jpi,jpj,jpl) , t1_ice (jpi,jpj,jpl) , alb_ice (jpi,jpj,jpl) , & 144 141 & qml_ice (jpi,jpj,jpl) , qcn_ice (jpi,jpj,jpl) , qsr_ice_tr(jpi,jpj,jpl) , & 145 142 & utau_ice(jpi,jpj) , vtau_ice (jpi,jpj) , wndm_ice (jpi,jpj) , & … … 151 148 152 149 #if defined key_cice 153 ALLOCATE( qla_ice(jpi,jpj,ncat) , qlw_ice(jpi,jpj,1) , qsr_ice(jpi,jpj,1) , &150 ALLOCATE( zevap_ice(jpi,jpj,ncat) , qlw_ice(jpi,jpj,1) , qsr_ice(jpi,jpj,1) , & 154 151 wndi_ice(jpi,jpj) , tatm_ice(jpi,jpj) , qatm_ice(jpi,jpj) , & 155 152 wndj_ice(jpi,jpj) , nfrzmlt(jpi,jpj) , ss_iou(jpi,jpj) , & 156 153 ss_iov(jpi,jpj) , fr_iu(jpi,jpj) , fr_iv(jpi,jpj) , & 157 a_i(jpi,jpj,ncat) , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat) , &154 a_i(jpi,jpj,ncat) , qml_ice(jpi,jpj,ncat) , qcn_ice(jpi,jpj,ncat) , & 158 155 #if defined key_asminc 159 156 ndaice_da(jpi,jpj) , nfresh_da(jpi,jpj) , nfsalt_da(jpi,jpj) , & 160 157 #endif 161 158 sstfrz(jpi,jpj) , STAT= ierr(2) ) 162 IF( ln_cpl ) ALLOCATE( u_ice(jpi,jpj) , t n_ice (jpi,jpj,jpl) , &159 IF( ln_cpl ) ALLOCATE( u_ice(jpi,jpj) , t1_ice (jpi,jpj,jpl) , & 163 160 & v_ice(jpi,jpj) , alb_ice(jpi,jpj,1) , & 164 161 & emp_ice(jpi,jpj) , qns_ice(jpi,jpj,1) , dqns_ice(jpi,jpj,1) , & 165 & a_ p(jpi,jpj,jpl) , ht_p(jpi,jpj,jpl) , tsfc_ice(jpi,jpj,jpl) , &166 & kn_ice(jpi,jpj,jpl) , STAT=ierr(3) )162 & a_ip(jpi,jpj,jpl) , v_ip(jpi,jpj,jpl) , tsfc_ice(jpi,jpj,jpl) , & 163 & cnd_ice(jpi,jpj,jpl) , STAT=ierr(3) ) 167 164 IF( ln_cpl ) ALLOCATE( h_i(jpi,jpj,jpl) , h_s(jpi,jpj,jpl) , STAT=ierr(4) ) 168 165 #endif … … 191 188 INTEGER , PUBLIC, PARAMETER :: jpl = 1 192 189 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: u_ice, v_ice ! jpi, jpj 193 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t n_ice, alb_ice, qns_ice, dqns_ice ! (jpi,jpj,jpl)190 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: t1_ice, alb_ice, qns_ice, dqns_ice ! (jpi,jpj,jpl) 194 191 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i 195 192 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_ice 196 193 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_ice 197 194 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: h_i, h_s 198 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: topmelt, botmelt195 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qml_ice, qcn_ice 199 196 ! 200 197 !! arrays related to embedding ice in the ocean. -
branches/UKMO/dev_merge_2017_CICE_interface/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r9631 r9675 367 367 IF (ksbc == jp_flx) THEN 368 368 DO jl=1,ncat 369 ztmpn(:,:,jl)= qla_ice(:,:,1)*a_i(:,:,jl)369 ztmpn(:,:,jl)=zevap_ice(:,:,1)*a_i(:,:,jl) 370 370 ENDDO 371 371 ELSE IF (ksbc == jp_purecpl) THEN 372 372 DO jl=1,ncat 373 ztmpn(:,:,jl)= qla_ice(:,:,jl)*a_i(:,:,jl)373 ztmpn(:,:,jl)=zevap_ice(:,:,jl)*a_i(:,:,jl) * (-1.0*Lsub) 374 374 ENDDO 375 375 ELSE 376 !In coupled mode - qla_ice calculated in sbc_cpl for each category377 ztmpn(:,:,1:ncat)= qla_ice(:,:,1:ncat)376 !In coupled mode - zevap_ice calculated in sbc_cpl for each category 377 ztmpn(:,:,1:ncat)=zevap_ice(:,:,1:ncat) 378 378 ENDIF 379 379 … … 384 384 ! Convert to GBM 385 385 IF (ksbc == jp_flx .OR. ksbc == jp_purecpl) THEN 386 ztmp(:,:) = botmelt(:,:,jl)*a_i(:,:,jl)386 ztmp(:,:) = qcn_ice(:,:,jl)*a_i(:,:,jl) 387 387 ELSE 388 ztmp(:,:) = botmelt(:,:,jl)388 ztmp(:,:) = qcn_ice(:,:,jl) 389 389 ENDIF 390 390 CALL nemo2cice(ztmp,fcondtopn_f(:,:,jl,:),'T', 1. ) … … 393 393 ! Convert to GBM 394 394 IF (ksbc == jp_flx .OR. ksbc == jp_purecpl) THEN 395 ztmp(:,:) = ( topmelt(:,:,jl)+botmelt(:,:,jl))*a_i(:,:,jl)395 ztmp(:,:) = (qml_ice(:,:,jl)+qcn_ice(:,:,jl))*a_i(:,:,jl) 396 396 ELSE 397 ztmp(:,:) = ( topmelt(:,:,jl)+botmelt(:,:,jl))397 ztmp(:,:) = (qml_ice(:,:,jl)+qcn_ice(:,:,jl)) 398 398 ENDIF 399 399 CALL nemo2cice(ztmp,fsurfn_f(:,:,jl,:),'T', 1. ) … … 738 738 ! Meltpond fraction and depth 739 739 DO jl = 1,ncat 740 CALL cice2nemo(apeffn(:,:,jl,:),a_ p(:,:,jl),'T', 1. )741 CALL cice2nemo(trcrn(:,:,nt_hpnd,jl,:), ht_p(:,:,jl),'T', 1. )740 CALL cice2nemo(apeffn(:,:,jl,:),a_ip(:,:,jl),'T', 1. ) 741 CALL cice2nemo(trcrn(:,:,nt_hpnd,jl,:),v_ip(:,:,jl),'T', 1. ) 742 742 ENDDO 743 743 #endif … … 752 752 IF (heat_capacity) THEN 753 753 DO jl = 1,ncat 754 CALL cice2nemo(Tn_top(:,:,jl,:),t n_ice(:,:,jl),'T', 1. )755 CALL cice2nemo(keffn_top(:,:,jl,:), kn_ice(:,:,jl),'T', 1. )754 CALL cice2nemo(Tn_top(:,:,jl,:),t1_ice(:,:,jl),'T', 1. ) 755 CALL cice2nemo(keffn_top(:,:,jl,:),cnd_ice(:,:,jl),'T', 1. ) 756 756 ENDDO 757 757 ! Convert surface temperature to Kelvin 758 t n_ice(:,:,:)=tn_ice(:,:,:)+rt0758 t1_ice(:,:,:)=t1_ice(:,:,:)+rt0 759 759 ELSE 760 t n_ice(:,:,:) = 0.0761 kn_ice(:,:,:) = 0.0760 t1_ice(:,:,:) = 0.0 761 cnd_ice(:,:,:) = 0.0 762 762 ENDIF 763 763 … … 877 877 tprecip(:,:) = sf(jp_snow)%fnow(:,:,1)+sf(jp_rain)%fnow(:,:,1) 878 878 ! May be better to do this conversion somewhere else 879 qla_ice(:,:,1) = -Lsub*sf(jp_sblm)%fnow(:,:,1)880 topmelt(:,:,1) = sf(jp_top1)%fnow(:,:,1)881 topmelt(:,:,2) = sf(jp_top2)%fnow(:,:,1)882 topmelt(:,:,3) = sf(jp_top3)%fnow(:,:,1)883 topmelt(:,:,4) = sf(jp_top4)%fnow(:,:,1)884 topmelt(:,:,5) = sf(jp_top5)%fnow(:,:,1)885 botmelt(:,:,1) = sf(jp_bot1)%fnow(:,:,1)886 botmelt(:,:,2) = sf(jp_bot2)%fnow(:,:,1)887 botmelt(:,:,3) = sf(jp_bot3)%fnow(:,:,1)888 botmelt(:,:,4) = sf(jp_bot4)%fnow(:,:,1)889 botmelt(:,:,5) = sf(jp_bot5)%fnow(:,:,1)879 zevap_ice(:,:,1) = -Lsub*sf(jp_sblm)%fnow(:,:,1) 880 qml_ice(:,:,1) = sf(jp_top1)%fnow(:,:,1) 881 qml_ice(:,:,2) = sf(jp_top2)%fnow(:,:,1) 882 qml_ice(:,:,3) = sf(jp_top3)%fnow(:,:,1) 883 qml_ice(:,:,4) = sf(jp_top4)%fnow(:,:,1) 884 qml_ice(:,:,5) = sf(jp_top5)%fnow(:,:,1) 885 qcn_ice(:,:,1) = sf(jp_bot1)%fnow(:,:,1) 886 qcn_ice(:,:,2) = sf(jp_bot2)%fnow(:,:,1) 887 qcn_ice(:,:,3) = sf(jp_bot3)%fnow(:,:,1) 888 qcn_ice(:,:,4) = sf(jp_bot4)%fnow(:,:,1) 889 qcn_ice(:,:,5) = sf(jp_bot5)%fnow(:,:,1) 890 890 891 891 ! control print (if less than 100 time-step asked)
Note: See TracChangeset
for help on using the changeset viewer.