Changeset 5033 for branches/2015
- Timestamp:
- 2015-01-15T14:28:25+01:00 (9 years ago)
- Location:
- branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r5030 r5033 88 88 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr_iu !: ice fraction at NEMO U point 89 89 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr_iv !: ice fraction at NEMO V point 90 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sstfrz !: sea surface freezing temperature 90 91 91 92 ! variables used in the coupled interface … … 140 141 141 142 #if defined key_cice 142 ALLOCATE( qla_ice(jpi,jpj,ncat) 143 ALLOCATE( qla_ice(jpi,jpj,ncat) , qlw_ice(jpi,jpj,1) , qsr_ice(jpi,jpj,1) , & 143 144 wndi_ice(jpi,jpj) , tatm_ice(jpi,jpj) , qatm_ice(jpi,jpj) , & 144 145 wndj_ice(jpi,jpj) , nfrzmlt(jpi,jpj) , ss_iou(jpi,jpj) , & 145 146 ss_iov(jpi,jpj) , fr_iu(jpi,jpj) , fr_iv(jpi,jpj) , & 146 147 a_i(jpi,jpj,ncat) , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat) , & 147 STAT= ierr(1) )148 sstfrz(jpi,jpj) , STAT= ierr(1) ) 148 149 IF( lk_cpl ) ALLOCATE( u_ice(jpi,jpj) , fr1_i0(jpi,jpj) , tn_ice (jpi,jpj,1) , & 149 150 & v_ice(jpi,jpj) , fr2_i0(jpi,jpj) , alb_ice(jpi,jpj,1) , & -
branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r5030 r5033 15 15 USE dom_oce ! ocean space and time domain 16 16 USE domvvl 17 USE eosbn2, only : eos_fzp ! Function to calculate freezing point of seawater 17 18 USE phycst, only : rcp, rau0, r1_rau0, rhosn, rhoic 18 19 USE in_out_manager ! I/O manager … … 161 162 INTEGER, INTENT( in ) :: ksbc ! surface forcing type 162 163 REAL(wp), DIMENSION(:,:), POINTER :: ztmp1, ztmp2 164 REAL(wp), DIMENSION(:,:,:), POINTER :: ztfrz3d 163 165 REAL(wp) :: zcoefu, zcoefv, zcoeff ! local scalar 164 166 INTEGER :: ji, jj, jl, jk ! dummy loop indices … … 173 175 ji_off = INT ( (jpiglo - nx_global) / 2 ) 174 176 jj_off = INT ( (jpjglo - ny_global) / 2 ) 177 178 ! Set freezing temperatures and ensure consistencey between NEMO and CICE 179 CALL wrk_alloc( jpi,jpj,jpk, ztfrz3d ) 180 DO jk=1,jpk 181 ztfrz3d(:,:,jk) = eos_fzp( tsn(:,:,jk,jp_sal), fsdewq(:,:,jk) ) 182 ENDDO 183 sstfrz(:,:)=ztfrz(:,:,1) 184 185 !Ensure that no temperature points are below freezing if not a NEMO restart 186 IF( .NOT. ln_rstart ) THEN 187 tsn(:,:,:,jp_tem) = MAX (tsn(:,:,:,jp_tem),ztfrz3d) 188 tsb(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) 189 ENDIF 175 190 176 191 #if defined key_nemocice_decomp … … 202 217 IF( sbc_ice_cice_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'sbc_ice_cice_alloc : unable to allocate cice arrays' ) 203 218 204 ! Ensure ocean temperatures are nowhere below freezing if not a NEMO restart 205 IF( .NOT. ln_rstart ) THEN 206 tsn(:,:,:,jp_tem) = MAX (tsn(:,:,:,jp_tem),Tocnfrz) 207 tsb(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) 208 ENDIF 219 209 220 210 221 fr_iu(:,:)=0.0 … … 283 294 284 295 CALL wrk_dealloc( jpi,jpj, ztmp1, ztmp2 ) 296 CALL wrk_dealloc( jpi,jpj,jpk, ztfrz3d ) 285 297 ! 286 298 IF( nn_timing == 1 ) CALL timing_stop('cice_sbc_init') … … 427 439 CALL nemo2cice(ztmp,frain,'T', 1. ) 428 440 441 ! Recalculate freezing temperature and send to CICE 442 sstfrz(:,:)=tfreez(sss_m(:,:)) 443 CALL nemo2cice(sstfrz,Tf,'T', 1. ) 444 429 445 ! Freezing/melting potential 430 446 ! Calculated over NEMO leapfrog timestep (hence 2*dt) 431 nfrzmlt(:,:)=rau0*rcp*fse3t_m(:,:)*(Tocnfrz-sst_m(:,:))/(2.0*dt) 432 433 ztmp(:,:) = nfrzmlt(:,:) 434 CALL nemo2cice(ztmp,frzmlt,'T', 1. ) 447 nfrzmlt(:,:)=rau0*rcp*fse3t_m(:,:,1)*(sstfrz(:,:)-sst_m(:,:))/(2.0*dt) 448 CALL nemo2cice(nfrzmlt,frzmlt,'T', 1. ) 435 449 436 450 ! SST and SSS
Note: See TracChangeset
for help on using the changeset viewer.