Changeset 834 for trunk/NEMO/LIM_SRC_3/limthd_dif.F90
- Timestamp:
- 2008-03-07T18:11:35+01:00 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/LIM_SRC_3/limthd_dif.F90
r825 r834 1 1 MODULE limthd_dif 2 2 #if defined key_lim3 3 !!---------------------------------------------------------------------- 4 !! 'key_lim3' LIM3 sea-ice model 5 !!---------------------------------------------------------------------- 3 6 !!====================================================================== 4 7 !! *** MODULE limthd_dif *** … … 14 17 USE thd_ice 15 18 USE iceini 16 USE limicepoints17 19 USE limistate 18 20 USE in_out_manager … … 34 36 35 37 !!---------------------------------------------------------------------- 36 !! LIM 3.0, UCL-ASTR-LOCEAN-IPSL (200 5)38 !! LIM 3.0, UCL-ASTR-LOCEAN-IPSL (2008) 37 39 !! (c) UCL-ASTR and Martin Vancoppenolle 38 40 !!---------------------------------------------------------------------- … … 88 90 !! ** History : 89 91 !! (02-2003) Martin Vancoppenolle, Louvain-la-Neuve, Belgium 90 !! (06-2005) Martin Vancoppenolle still!!! for the 3d version...92 !! (06-2005) Martin Vancoppenolle, 3d version 91 93 !! (11-2006) Vectorized by Xavier Fettweis (UCL-ASTR) 92 94 !! (04-2007) Energy conservation tested by M. Vancoppenolle … … 106 108 layer, & ! vertical dummy loop index 107 109 nconv, & ! number of iterations in iterative procedure 108 ! nconvmax = 50, &! maximum number of iterations for temperature computations (50)109 index, & !110 110 minnumeqmin, & ! 111 111 maxnumeqmax … … 158 158 zfsw , & !solar radiation absorbed at the surface 159 159 zf , & ! surface flux function 160 dzf , & ! derivative of the surface flux function 161 zksn !effective snow conductivity 160 dzf ! derivative of the surface flux function 162 161 163 162 REAL(wp) :: & ! constant values … … 168 167 zbeta = 0.117, & !: for thermal conductivity (could be 0.13) 169 168 zraext_s = 1.0e08, & !: extinction coefficient of radiation in the snow 170 ! zraext_i = 1.5, & !extinction coefficient of radiation in the ice171 ! zraext_i = 1.0, & !extinction coefficient of radiation in the ice172 ! MY 0.87, FY 1.2 (Grenfell, Perovich and Light173 ! 07)174 ! zerrmax = 1.0e-4 , & !: error criterion for convergence of the iterative process175 zfc_int , & !: conductive heat flux at the interface176 169 zkimin = 0.10 , & !: minimum ice thermal conductivity 177 170 zht_smin = 1.0e-4 !: minimum snow depth 178 171 179 172 REAL(wp) :: & ! local variables 180 zheshth, & ! = zhe(ji) / thth181 173 ztmelt_i, & ! ice melting temperature 182 zerritmax, & ! current maximal error on temperature 183 zexp 174 zerritmax ! current maximal error on temperature 184 175 185 176 REAL(wp), DIMENSION(jpij) :: & 186 177 zerrit, & ! current error on temperature 187 178 zdifcase, & ! case of the equation resolution (1->4) 188 zghe, & ! correction factor of the thermal conductivity189 zhe, & ! effective thickness for compu. of equ. thermal conductivity190 179 zftrice, & ! solar radiation transmitted through the ice 191 zihic, zihe, zhsu 192 193 CHARACTER (len=50) :: charout 180 zihic, zhsu 181 194 182 !!-- End of declarations 195 183 !!---------------------------------------------------------------------------------------------- 196 184 197 ! new namelist parameters198 ! maxer_i_thd = maxer_i_thd199 ! thcon_i_swi = thcon_i_swi200 ! kappa_i = kappa_i201 ! nconv_i_thd = nconv_i_thd202 203 185 IF(lwp) WRITE(numout,*)'lim_thd_dif : Heat diffusion in sea ice for cat :', jl 204 186 205 thcon_i_swi = 1 ! Pringle et al. (2007)206 187 ! 207 188 !------------------------------------------------------------------------------! … … 339 320 zradtr_i(ji,nlay_i) 340 321 END DO 322 ! +++++ 323 341 324 DO layer = 1, nlay_i 342 325 DO ji = kideb , kiut … … 345 328 END DO 346 329 347 ! +++++348 330 349 331 ! … … 379 361 DO WHILE ((zerritmax > maxer_i_thd).AND.(nconv < nconv_i_thd)) 380 362 381 ! ! +++++382 ! DO ji = kideb , kiut383 ! zji = MOD( npb(ji) - 1, jpi ) + 1384 ! zjj = ( npb(ji) - 1 ) / jpi + 1385 ! IF ( (zji.EQ.jiindex) .AND. (zjj.EQ.jjindex) ) THEN386 ! WRITE(numout,*) ' Iteration : ', nconv387 ! WRITE(numout,*) ' t_su : ', t_su_b(ji)388 ! WRITE(numout,*) ' t_s : ', t_s_b(ji,1)389 ! WRITE(numout,*) ' t_i : ', t_i_b(ji,:)390 ! WRITE(numout,*) ' difcase : ', zdifcase(ji)391 ! ENDIF392 ! END DO393 ! ! +++++394 395 363 nconv = nconv+1 396 364 … … 410 378 411 379 IF ( thcon_i_swi .EQ. 1 ) THEN 412 ! Pringle et al formula included, should be tested380 ! Pringle et al formula included, 413 381 ! 2.11 + 0.09 S/T - 0.011.T 414 382 DO ji = kideb , kiut … … 489 457 zkappa_i(ji,0) = ztcond_i(ji,0)/MAX(zeps,zh_i(ji)) 490 458 zkappa_i(ji,nlay_i) = ztcond_i(ji,nlay_i) / MAX(zeps,zh_i(ji)) 491 492 459 !-- Interface 493 460 zkappa_s(ji,nlay_s) = 2.0*rcdsn*ztcond_i(ji,0)/MAX(zeps, & … … 616 583 numeqmin(ji) = 1 617 584 numeqmax(ji) = nlay_i + nlay_s + 1 585 618 586 !!surface equation 619 587 ztrid(ji,1,1) = 0.0 620 588 ztrid(ji,1,2) = dzf(ji) - zg1s*zkappa_s(ji,0) 621 589 ztrid(ji,1,3) = zg1s*zkappa_s(ji,0) 622 ! bug again ???623 ! zindterm(ji,1) = dzf(ji)*ztsuold(ji) - zf(ji)624 590 zindterm(ji,1) = dzf(ji)*t_su_b(ji) - zf(ji) 625 591 … … 853 819 END DO 854 820 821 !-------------------------! 822 ! Heat conservation ! 823 !-------------------------! 855 824 IF ( con_i ) THEN 856 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++857 ! ++++ heat conservation ++++ '858 ! Internal fluxes ... goes to trash!!!859 825 860 826 DO ji = kideb, kiut … … 884 850 zji = MOD( npb(ji) - 1, jpi ) + 1 885 851 zjj = ( npb(ji) - 1 ) / jpi + 1 886 ! IF ( ( zji.EQ.jiindex ) .AND. ( zjj.EQ.jjindex) ) THEN887 ! WRITE(numout,*) ' layer : ', layer888 ! WRITE(numout,*) ' fc_i : ', fc_i(ji,layer)889 ! WRITE(numout,*) ' zkappa_i : ', zkappa_i(ji,layer)890 ! WRITE(numout,*) ' ztcond_i : ', ztcond_i(ji,layer)891 ! WRITE(numout,*) ' zspeche_i: ', zspeche_i(ji,layer)892 ! WRITE(numout,*) ' ti2 : ', t_i_b(ji,layer+1)893 ! WRITE(numout,*) ' ti1 : ', t_i_b(ji,layer)894 ! ENDIF895 852 END DO 896 853 END DO … … 903 860 904 861 ENDIF 905 906 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++907 862 908 863 END SUBROUTINE lim_thd_dif
Note: See TracChangeset
for help on using the changeset viewer.