Changeset 3480 for branches/2012/dev_3352_UKMO8_CICE
- Timestamp:
- 2012-10-02T11:28:15+02:00 (12 years ago)
- Location:
- branches/2012/dev_3352_UKMO8_CICE/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_3352_UKMO8_CICE/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r3476 r3480 16 16 USE domvvl 17 17 USE phycst, only : rcp, rau0 18 USE eosbn2, only : tfreez19 18 USE in_out_manager ! I/O manager 20 19 USE lib_mpp ! distributed memory computing library … … 44 43 flatn_f,fsurfn_f,fcondtopn_f, & 45 44 uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl, & 46 swvdr,swvdf,swidr,swidf ,Tf45 swvdr,swvdf,swidr,swidf 47 46 USE ice_forcing, only: frcvdr,frcvdf,frcidr,frcidf 48 47 USE ice_atmo, only: calc_strair … … 150 149 !!--------------------------------------------------------------------- 151 150 152 INTEGER :: ji, jj, jk, jl ! dummy loop indices 153 REAL(wp), DIMENSION(:,:,:), POINTER :: ztmp 151 INTEGER :: ji, jj, jl ! dummy loop indices 154 152 155 153 IF( nn_timing == 1 ) CALL timing_start('cice_sbc_init') 156 154 ! 157 CALL wrk_alloc( jpi,jpj,jpk, ztmp )158 155 IF(lwp) WRITE(numout,*)'cice_sbc_init' 159 156 … … 177 174 IF( sbc_ice_cice_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'sbc_ice_cice_alloc : unable to allocate cice arrays' ) 178 175 179 ! Set freezing temperatures and ensure consistency between NEMO and CICE180 ! (-1.8 for fully coupled, salinity dependence otherwise)181 ! Setting of Tf here or in cice_sbc_in will over-write anything already done in cice_init182 176 ! Ensure ocean temperatures are nowhere below freezing if not a NEMO restart 183 184 IF (nsbc == 5) THEN185 ztmp(:,:,:)=-1.8186 CALL nemo2cice(ztmp(:,:,1),Tf,'T', 1. ) ! Set in CICE here as won't be updated in cice_sbc_in187 ELSE188 DO jk=1,jpk189 ztmp(:,:,jk)= tfreez(tsn(:,:,jk,jp_sal),fsdepw(:,:,jk))190 ENDDO191 ENDIF192 193 177 IF( .NOT. ln_rstart ) THEN 194 tsn(:,:,:,jp_tem) = MAX (tsn(:,:,:,jp_tem), ztmp)178 tsn(:,:,:,jp_tem) = MAX (tsn(:,:,:,jp_tem),Tocnfrz) 195 179 tsb(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) 196 180 ENDIF … … 217 201 CALL lbc_lnk ( fr_iu , 'U', 1. ) 218 202 CALL lbc_lnk ( fr_iv , 'V', 1. ) 219 !220 CALL wrk_dealloc( jpi,jpj,jpk, ztmp )221 203 ! 222 204 IF( nn_timing == 1 ) CALL timing_stop('cice_sbc_init') … … 375 357 CALL nemo2cice(ztmp,frain,'T', 1. ) 376 358 377 ! Recalculate freezing temperature and send to CICE except for fully coupled when378 ! it remains as -1.8 throughout the run379 IF ( nsbc==5 ) THEN380 ztmp(:,:)=-1.8381 ELSE382 ztmp(:,:)=tfreez(sss_m(:,:))383 CALL nemo2cice(ztmp,Tf,'T', 1. )384 ENDIF385 386 359 ! Freezing/melting potential 387 360 ! Calculated over NEMO leapfrog timestep (hence 2*dt) 388 nfrzmlt(:,:)=rau0*rcp*fse3t_m(:,:,1)*(ztmp(:,:)-sst_m(:,:))/(2.0*dt) 389 CALL nemo2cice(nfrzmlt,frzmlt,'T', 1. ) 361 nfrzmlt(:,:)=rau0*rcp*fse3t_m(:,:,1)*(Tocnfrz-sst_m(:,:))/(2.0*dt) 362 363 ztmp(:,:) = nfrzmlt(:,:) 364 CALL nemo2cice(ztmp,frzmlt,'T', 1. ) 390 365 391 366 ! SST and SSS -
branches/2012/dev_3352_UKMO8_CICE/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r3357 r3480 678 678 679 679 680 FUNCTION tfreez( psal , ppress) RESULT( ptf )680 FUNCTION tfreez( psal ) RESULT( ptf ) 681 681 !!---------------------------------------------------------------------- 682 682 !! *** ROUTINE eos_init *** … … 691 691 !!---------------------------------------------------------------------- 692 692 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: psal ! salinity [psu] 693 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ), OPTIONAL :: ppress ! pressure [dBar]694 693 ! Leave result array automatic rather than making explicitly allocated 695 694 REAL(wp), DIMENSION(jpi,jpj) :: ptf ! freezing temperature [Celcius] … … 698 697 ptf(:,:) = ( - 0.0575_wp + 1.710523e-3_wp * SQRT( psal(:,:) ) & 699 698 & - 2.154996e-4_wp * psal(:,:) ) * psal(:,:) 700 701 IF( PRESENT(ppress) ) THEN702 ptf(:,:) = ptf(:,:) - 7.53e-4_wp * ppress(:,:)703 ENDIF704 705 699 ! 706 700 END FUNCTION tfreez
Note: See TracChangeset
for help on using the changeset viewer.