- Timestamp:
- 2017-03-17T08:46:30+01:00 (7 years ago)
- Location:
- branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/LIM_SRC_3
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r7256 r7806 212 212 REAL(wp), PUBLIC :: rn_betas !: coef. for partitioning of snowfall between leads and sea ice 213 213 REAL(wp), PUBLIC :: rn_kappa_i !: coef. for the extinction of radiation Grenfell et al. (2006) [1/m] 214 REAL(wp), PUBLIC :: rn_cdsn !: thermal conductivity of the snow [W/m/K] 214 215 REAL(wp), PUBLIC :: nn_conv_dif !: maximal number of iterations for heat diffusion 215 216 REAL(wp), PUBLIC :: rn_terr_dif !: maximal tolerated error (C) for heat diffusion … … 320 321 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: o_i !: Sea-Ice Age (days) 321 322 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: oa_i !: Sea-Ice Age times ice area (days) 323 322 324 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: bv_i !: brine volume 323 325 … … 406 408 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vice !: ice volume variation [m/s] 407 409 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: diag_vsnw !: snw volume variation [m/s] 410 408 411 ! 409 412 !!---------------------------------------------------------------------- … … 463 466 & et_i (jpi,jpj) , et_s (jpi,jpj) , tm_i (jpi,jpj) , bvm_i(jpi,jpj) , & 464 467 & smt_i(jpi,jpj) , tm_su(jpi,jpj) , htm_i(jpi,jpj) , htm_s(jpi,jpj) , & 465 & om_i (jpi,jpj) 468 & om_i (jpi,jpj) , STAT=ierr(ii) ) 466 469 ii = ii + 1 467 470 ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) , e_s(jpi,jpj,nlay_s,jpl) , STAT=ierr(ii) ) -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90
r5602 r7806 244 244 INTEGER :: ios ! Local integer output status for namelist read 245 245 NAMELIST/namicedyn/ nn_icestr, ln_icestr_bvf, rn_pe_rdg, rn_pstar, rn_crhg, rn_cio, rn_creepl, rn_ecc, & 246 & nn_nevp, rn_relast, nn_ahi0, rn_ahi0_ref 247 INTEGER :: ji, jj 248 REAL(wp) :: za00, zd_max 246 & nn_nevp, rn_relast 249 247 !!------------------------------------------------------------------- 250 248 … … 272 270 WRITE(numout,*) ' number of iterations for subcycling nn_nevp = ', nn_nevp 273 271 WRITE(numout,*) ' ratio of elastic timescale over ice time step rn_relast = ', rn_relast 274 WRITE(numout,*) ' horizontal diffusivity calculation nn_ahi0 = ', nn_ahi0275 WRITE(numout,*) ' horizontal diffusivity coeff. (orca2 grid) rn_ahi0_ref = ', rn_ahi0_ref276 272 ENDIF 277 273 ! … … 279 275 rhoco = rau0 * rn_cio 280 276 ! 281 ! Diffusion coefficients282 SELECT CASE( nn_ahi0 )283 284 CASE( 0 )285 ahiu(:,:) = rn_ahi0_ref286 ahiv(:,:) = rn_ahi0_ref287 288 IF(lwp) WRITE(numout,*) ''289 IF(lwp) WRITE(numout,*) ' laplacian operator: ahim constant = rn_ahi0_ref'290 291 CASE( 1 )292 293 zd_max = MAX( MAXVAL( e1t(:,:) ), MAXVAL( e2t(:,:) ) )294 IF( lk_mpp ) CALL mpp_max( zd_max ) ! max over the global domain295 296 ahiu(:,:) = rn_ahi0_ref * zd_max * 1.e-05_wp ! 1.e05 = 100km = max grid space at 60° latitude in orca2297 ! (60° = min latitude for ice cover)298 ahiv(:,:) = rn_ahi0_ref * zd_max * 1.e-05_wp299 300 IF(lwp) WRITE(numout,*) ''301 IF(lwp) WRITE(numout,*) ' laplacian operator: ahim proportional to max of e1 e2 over the domain (', zd_max, ')'302 IF(lwp) WRITE(numout,*) ' value for ahim = ', rn_ahi0_ref * zd_max * 1.e-05_wp303 304 CASE( 2 )305 306 zd_max = MAX( MAXVAL( e1t(:,:) ), MAXVAL( e2t(:,:) ) )307 IF( lk_mpp ) CALL mpp_max( zd_max ) ! max over the global domain308 309 za00 = rn_ahi0_ref * 1.e-05_wp ! 1.e05 = 100km = max grid space at 60° latitude in orca2310 ! (60° = min latitude for ice cover)311 DO jj = 1, jpj312 DO ji = 1, jpi313 ahiu(ji,jj) = za00 * MAX( e1t(ji,jj), e2t(ji,jj) ) * umask(ji,jj,1)314 ahiv(ji,jj) = za00 * MAX( e1f(ji,jj), e2f(ji,jj) ) * vmask(ji,jj,1)315 END DO316 END DO317 !318 IF(lwp) WRITE(numout,*) ''319 IF(lwp) WRITE(numout,*) ' laplacian operator: ahim proportional to e1'320 IF(lwp) WRITE(numout,*) ' maximum grid-spacing = ', zd_max, ' maximum value for ahim = ', za00*zd_max321 322 END SELECT323 324 277 END SUBROUTINE lim_dyn_init 325 278 -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90
r7256 r7806 202 202 ! ----------------------- 203 203 204 IF(ln_ctl) THEN205 DO jk = 1 , isize206 zrlx(:,:,jk) = ptab(:,:,jk) - ztab0(:,:,jk)207 WRITE(charout,FMT="(' lim_hdf : zconv =',D23.16, ' iter =',I4,2X)") zconv, iter208 CALL prt_ctl( tab2d_1=zrlx(:,:,jk), clinfo1=charout )209 END DO210 ENDIF204 ! IF(ln_ctl) THEN 205 ! DO jk = 1 , isize 206 ! zrlx(:,:,jk) = ptab(:,:,jk) - ztab0(:,:,jk) 207 ! WRITE(charout,FMT="('lim_hdf : zconv =',D23.16, ' iter =',I4)") zconv, iter 208 ! CALL prt_ctl( tab2d_1=zrlx(:,:,jk), clinfo1=charout ) 209 ! END DO 210 ! ENDIF 211 211 ! 212 212 CALL wrk_dealloc( jpi, jpj, isize, zrlx, zdiv0, ztab0 ) … … 233 233 !!------------------------------------------------------------------- 234 234 INTEGER :: ios ! Local integer output status for namelist read 235 NAMELIST/namicehdf/ nn_convfrq 236 !!------------------------------------------------------------------- 237 ! 238 IF(lwp) THEN 239 WRITE(numout,*) 240 WRITE(numout,*) 'lim_hdf : Ice horizontal diffusion' 241 WRITE(numout,*) '~~~~~~~' 242 ENDIF 235 NAMELIST/namicehdf/ nn_ahi0, rn_ahi0_ref, nn_convfrq 236 INTEGER :: ji, jj 237 REAL(wp) :: za00, zd_max 238 !!------------------------------------------------------------------- 243 239 ! 244 240 REWIND( numnam_ice_ref ) ! Namelist namicehdf in reference namelist : Ice horizontal diffusion … … 253 249 IF(lwp) THEN ! control print 254 250 WRITE(numout,*) 255 WRITE(numout,*)' Namelist of ice parameters for ice horizontal diffusion computation ' 256 WRITE(numout,*)' convergence check frequency of the Crant-Nicholson scheme nn_convfrq = ', nn_convfrq 251 WRITE(numout,*) 'lim_hdf_init : Ice horizontal diffusion' 252 WRITE(numout,*) '~~~~~~~~~~~' 253 WRITE(numout,*) ' horizontal diffusivity calculation nn_ahi0 = ', nn_ahi0 254 WRITE(numout,*) ' horizontal diffusivity coeff. (orca2 grid) rn_ahi0_ref = ', rn_ahi0_ref 255 WRITE(numout,*) ' convergence check frequency of the Crant-Nicholson scheme nn_convfrq = ', nn_convfrq 257 256 ENDIF 257 ! 258 ! Diffusion coefficients 259 SELECT CASE( nn_ahi0 ) 260 261 CASE( -1 ) 262 ahiu(:,:) = 0._wp 263 ahiv(:,:) = 0._wp 264 265 IF(lwp) WRITE(numout,*) '' 266 IF(lwp) WRITE(numout,*) ' No sea-ice diffusion applied' 267 268 CASE( 0 ) 269 ahiu(:,:) = rn_ahi0_ref 270 ahiv(:,:) = rn_ahi0_ref 271 272 IF(lwp) WRITE(numout,*) '' 273 IF(lwp) WRITE(numout,*) ' laplacian operator: ahim constant = rn_ahi0_ref' 274 275 CASE( 1 ) 276 277 zd_max = MAX( MAXVAL( e1t(:,:) ), MAXVAL( e2t(:,:) ) ) 278 IF( lk_mpp ) CALL mpp_max( zd_max ) ! max over the global domain 279 280 ahiu(:,:) = rn_ahi0_ref * zd_max * 1.e-05_wp ! 1.e05 = 100km = max grid space at 60deg latitude in orca2 281 ! (60deg = min latitude for ice cover) 282 ahiv(:,:) = rn_ahi0_ref * zd_max * 1.e-05_wp 283 284 IF(lwp) WRITE(numout,*) '' 285 IF(lwp) WRITE(numout,*) ' laplacian operator: ahim proportional to max of e1 e2 over the domain (', zd_max, ')' 286 IF(lwp) WRITE(numout,*) ' value for ahim = ', rn_ahi0_ref * zd_max * 1.e-05_wp 287 288 CASE( 2 ) 289 290 zd_max = MAX( MAXVAL( e1t(:,:) ), MAXVAL( e2t(:,:) ) ) 291 IF( lk_mpp ) CALL mpp_max( zd_max ) ! max over the global domain 292 293 za00 = rn_ahi0_ref * 1.e-05_wp ! 1.e05 = 100km = max grid space at 60deg latitude in orca2 294 ! (60deg = min latitude for ice cover) 295 DO jj = 1, jpj 296 DO ji = 1, jpi 297 ahiu(ji,jj) = za00 * MAX( e1t(ji,jj), e2t(ji,jj) ) * umask(ji,jj,1) 298 ahiv(ji,jj) = za00 * MAX( e1f(ji,jj), e2f(ji,jj) ) * vmask(ji,jj,1) 299 END DO 300 END DO 301 ! 302 IF(lwp) WRITE(numout,*) '' 303 IF(lwp) WRITE(numout,*) ' laplacian operator: ahim proportional to e1' 304 IF(lwp) WRITE(numout,*) ' maximum grid-spacing = ', zd_max, ' maximum value for ahim = ', za00*zd_max 305 306 END SELECT 258 307 ! 259 308 END SUBROUTINE lim_hdf_init -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
r5602 r7806 108 108 INTEGER :: iter 109 109 CHARACTER(len=15) :: znam 110 CHARACTER(len= 1) :: zchar, zchar1110 CHARACTER(len=2) :: zchar, zchar1 111 111 REAL(wp), POINTER, DIMENSION(:,:) :: z2d 112 112 !!---------------------------------------------------------------------- … … 130 130 ! Prognostic variables 131 131 DO jl = 1, jpl 132 WRITE(zchar,'(I 1)') jl133 znam = 'v_i'//'_htc'// zchar132 WRITE(zchar,'(I2)') jl 133 znam = 'v_i'//'_htc'//TRIM(ADJUSTL(zchar)) 134 134 z2d(:,:) = v_i(:,:,jl) 135 135 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 136 znam = 'v_s'//'_htc'// zchar136 znam = 'v_s'//'_htc'//TRIM(ADJUSTL(zchar)) 137 137 z2d(:,:) = v_s(:,:,jl) 138 138 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 139 znam = 'smv_i'//'_htc'// zchar139 znam = 'smv_i'//'_htc'//TRIM(ADJUSTL(zchar)) 140 140 z2d(:,:) = smv_i(:,:,jl) 141 141 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 142 znam = 'oa_i'//'_htc'// zchar142 znam = 'oa_i'//'_htc'//TRIM(ADJUSTL(zchar)) 143 143 z2d(:,:) = oa_i(:,:,jl) 144 144 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 145 znam = 'a_i'//'_htc'// zchar145 znam = 'a_i'//'_htc'//TRIM(ADJUSTL(zchar)) 146 146 z2d(:,:) = a_i(:,:,jl) 147 147 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 148 znam = 't_su'//'_htc'// zchar148 znam = 't_su'//'_htc'//TRIM(ADJUSTL(zchar)) 149 149 z2d(:,:) = t_su(:,:,jl) 150 150 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 151 END DO 152 153 DO jl = 1, jpl 154 WRITE(zchar,'(I1)') jl 155 znam = 'tempt_sl1'//'_htc'//zchar 151 znam = 'tempt_sl1'//'_htc'//TRIM(ADJUSTL(zchar)) 156 152 z2d(:,:) = e_s(:,:,1,jl) 157 153 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 158 END DO159 160 DO jl = 1, jpl161 WRITE(zchar,'(I1)') jl162 154 DO jk = 1, nlay_i 163 WRITE(zchar1,'(I 1)') jk164 znam = 'tempt'//'_il'// zchar1//'_htc'//zchar155 WRITE(zchar1,'(I2)') jk 156 znam = 'tempt'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 165 157 z2d(:,:) = e_i(:,:,jk,jl) 166 158 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) … … 177 169 178 170 DO jl = 1, jpl 179 WRITE(zchar,'(I 1)') jl180 znam = 'sxice'//'_htc'// zchar171 WRITE(zchar,'(I2)') jl 172 znam = 'sxice'//'_htc'//TRIM(ADJUSTL(zchar)) 181 173 z2d(:,:) = sxice(:,:,jl) 182 174 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 183 znam = 'syice'//'_htc'// zchar175 znam = 'syice'//'_htc'//TRIM(ADJUSTL(zchar)) 184 176 z2d(:,:) = syice(:,:,jl) 185 177 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 186 znam = 'sxxice'//'_htc'// zchar178 znam = 'sxxice'//'_htc'//TRIM(ADJUSTL(zchar)) 187 179 z2d(:,:) = sxxice(:,:,jl) 188 180 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 189 znam = 'syyice'//'_htc'// zchar181 znam = 'syyice'//'_htc'//TRIM(ADJUSTL(zchar)) 190 182 z2d(:,:) = syyice(:,:,jl) 191 183 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 192 znam = 'sxyice'//'_htc'// zchar184 znam = 'sxyice'//'_htc'//TRIM(ADJUSTL(zchar)) 193 185 z2d(:,:) = sxyice(:,:,jl) 194 186 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 195 znam = 'sxsn'//'_htc'// zchar187 znam = 'sxsn'//'_htc'//TRIM(ADJUSTL(zchar)) 196 188 z2d(:,:) = sxsn(:,:,jl) 197 189 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 198 znam = 'sysn'//'_htc'// zchar190 znam = 'sysn'//'_htc'//TRIM(ADJUSTL(zchar)) 199 191 z2d(:,:) = sysn(:,:,jl) 200 192 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 201 znam = 'sxxsn'//'_htc'// zchar193 znam = 'sxxsn'//'_htc'//TRIM(ADJUSTL(zchar)) 202 194 z2d(:,:) = sxxsn(:,:,jl) 203 195 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 204 znam = 'syysn'//'_htc'// zchar196 znam = 'syysn'//'_htc'//TRIM(ADJUSTL(zchar)) 205 197 z2d(:,:) = syysn(:,:,jl) 206 198 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 207 znam = 'sxysn'//'_htc'// zchar199 znam = 'sxysn'//'_htc'//TRIM(ADJUSTL(zchar)) 208 200 z2d(:,:) = sxysn(:,:,jl) 209 201 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 210 znam = 'sxa'//'_htc'// zchar202 znam = 'sxa'//'_htc'//TRIM(ADJUSTL(zchar)) 211 203 z2d(:,:) = sxa(:,:,jl) 212 204 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 213 znam = 'sya'//'_htc'// zchar205 znam = 'sya'//'_htc'//TRIM(ADJUSTL(zchar)) 214 206 z2d(:,:) = sya(:,:,jl) 215 207 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 216 znam = 'sxxa'//'_htc'// zchar208 znam = 'sxxa'//'_htc'//TRIM(ADJUSTL(zchar)) 217 209 z2d(:,:) = sxxa(:,:,jl) 218 210 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 219 znam = 'syya'//'_htc'// zchar211 znam = 'syya'//'_htc'//TRIM(ADJUSTL(zchar)) 220 212 z2d(:,:) = syya(:,:,jl) 221 213 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 222 znam = 'sxya'//'_htc'// zchar214 znam = 'sxya'//'_htc'//TRIM(ADJUSTL(zchar)) 223 215 z2d(:,:) = sxya(:,:,jl) 224 216 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 225 znam = 'sxc0'//'_htc'// zchar217 znam = 'sxc0'//'_htc'//TRIM(ADJUSTL(zchar)) 226 218 z2d(:,:) = sxc0(:,:,jl) 227 219 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 228 znam = 'syc0'//'_htc'// zchar220 znam = 'syc0'//'_htc'//TRIM(ADJUSTL(zchar)) 229 221 z2d(:,:) = syc0(:,:,jl) 230 222 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 231 znam = 'sxxc0'//'_htc'// zchar223 znam = 'sxxc0'//'_htc'//TRIM(ADJUSTL(zchar)) 232 224 z2d(:,:) = sxxc0(:,:,jl) 233 225 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 234 znam = 'syyc0'//'_htc'// zchar226 znam = 'syyc0'//'_htc'//TRIM(ADJUSTL(zchar)) 235 227 z2d(:,:) = syyc0(:,:,jl) 236 228 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 237 znam = 'sxyc0'//'_htc'// zchar229 znam = 'sxyc0'//'_htc'//TRIM(ADJUSTL(zchar)) 238 230 z2d(:,:) = sxyc0(:,:,jl) 239 231 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 240 znam = 'sxsal'//'_htc'// zchar232 znam = 'sxsal'//'_htc'//TRIM(ADJUSTL(zchar)) 241 233 z2d(:,:) = sxsal(:,:,jl) 242 234 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 243 znam = 'sysal'//'_htc'// zchar235 znam = 'sysal'//'_htc'//TRIM(ADJUSTL(zchar)) 244 236 z2d(:,:) = sysal(:,:,jl) 245 237 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 246 znam = 'sxxsal'//'_htc'// zchar238 znam = 'sxxsal'//'_htc'//TRIM(ADJUSTL(zchar)) 247 239 z2d(:,:) = sxxsal(:,:,jl) 248 240 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 249 znam = 'syysal'//'_htc'// zchar241 znam = 'syysal'//'_htc'//TRIM(ADJUSTL(zchar)) 250 242 z2d(:,:) = syysal(:,:,jl) 251 243 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 252 znam = 'sxysal'//'_htc'// zchar244 znam = 'sxysal'//'_htc'//TRIM(ADJUSTL(zchar)) 253 245 z2d(:,:) = sxysal(:,:,jl) 254 246 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 255 znam = 'sxage'//'_htc'// zchar247 znam = 'sxage'//'_htc'//TRIM(ADJUSTL(zchar)) 256 248 z2d(:,:) = sxage(:,:,jl) 257 249 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 258 znam = 'syage'//'_htc'// zchar250 znam = 'syage'//'_htc'//TRIM(ADJUSTL(zchar)) 259 251 z2d(:,:) = syage(:,:,jl) 260 252 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 261 znam = 'sxxage'//'_htc'// zchar253 znam = 'sxxage'//'_htc'//TRIM(ADJUSTL(zchar)) 262 254 z2d(:,:) = sxxage(:,:,jl) 263 255 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 264 znam = 'syyage'//'_htc'// zchar256 znam = 'syyage'//'_htc'//TRIM(ADJUSTL(zchar)) 265 257 z2d(:,:) = syyage(:,:,jl) 266 258 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 267 znam = 'sxyage'//'_htc'// zchar259 znam = 'sxyage'//'_htc'//TRIM(ADJUSTL(zchar)) 268 260 z2d(:,:) = sxyage(:,:,jl) 269 261 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) … … 277 269 278 270 DO jl = 1, jpl 279 WRITE(zchar,'(I 1)') jl271 WRITE(zchar,'(I2)') jl 280 272 DO jk = 1, nlay_i 281 WRITE(zchar1,'(I 1)') jk282 znam = 'sxe'//'_il'// zchar1//'_htc'//zchar273 WRITE(zchar1,'(I2)') jk 274 znam = 'sxe'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 283 275 z2d(:,:) = sxe(:,:,jk,jl) 284 276 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 285 znam = 'sye'//'_il'// zchar1//'_htc'//zchar277 znam = 'sye'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 286 278 z2d(:,:) = sye(:,:,jk,jl) 287 279 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 288 znam = 'sxxe'//'_il'// zchar1//'_htc'//zchar280 znam = 'sxxe'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 289 281 z2d(:,:) = sxxe(:,:,jk,jl) 290 282 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 291 znam = 'syye'//'_il'// zchar1//'_htc'//zchar283 znam = 'syye'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 292 284 z2d(:,:) = syye(:,:,jk,jl) 293 285 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) 294 znam = 'sxye'//'_il'// zchar1//'_htc'//zchar286 znam = 'sxye'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 295 287 z2d(:,:) = sxye(:,:,jk,jl) 296 288 CALL iom_rstput( iter, nitrst, numriw, znam , z2d ) … … 318 310 REAL(wp), POINTER, DIMENSION(:,:) :: z2d 319 311 CHARACTER(len=15) :: znam 320 CHARACTER(len= 1) :: zchar, zchar1312 CHARACTER(len=2) :: zchar, zchar1 321 313 INTEGER :: jlibalt = jprstlib 322 314 LOGICAL :: llok … … 357 349 358 350 DO jl = 1, jpl 359 WRITE(zchar,'(I 1)') jl360 znam = 'v_i'//'_htc'// zchar351 WRITE(zchar,'(I2)') jl 352 znam = 'v_i'//'_htc'//TRIM(ADJUSTL(zchar)) 361 353 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 362 354 v_i(:,:,jl) = z2d(:,:) 363 znam = 'v_s'//'_htc'// zchar355 znam = 'v_s'//'_htc'//TRIM(ADJUSTL(zchar)) 364 356 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 365 357 v_s(:,:,jl) = z2d(:,:) 366 znam = 'smv_i'//'_htc'// zchar358 znam = 'smv_i'//'_htc'//TRIM(ADJUSTL(zchar)) 367 359 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 368 360 smv_i(:,:,jl) = z2d(:,:) 369 znam = 'oa_i'//'_htc'// zchar361 znam = 'oa_i'//'_htc'//TRIM(ADJUSTL(zchar)) 370 362 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 371 363 oa_i(:,:,jl) = z2d(:,:) 372 znam = 'a_i'//'_htc'// zchar364 znam = 'a_i'//'_htc'//TRIM(ADJUSTL(zchar)) 373 365 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 374 366 a_i(:,:,jl) = z2d(:,:) 375 znam = 't_su'//'_htc'// zchar367 znam = 't_su'//'_htc'//TRIM(ADJUSTL(zchar)) 376 368 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 377 369 t_su(:,:,jl) = z2d(:,:) 378 END DO 379 380 DO jl = 1, jpl 381 WRITE(zchar,'(I1)') jl 382 znam = 'tempt_sl1'//'_htc'//zchar 370 znam = 'tempt_sl1'//'_htc'//TRIM(ADJUSTL(zchar)) 383 371 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 384 372 e_s(:,:,1,jl) = z2d(:,:) 385 END DO386 387 DO jl = 1, jpl388 WRITE(zchar,'(I1)') jl389 373 DO jk = 1, nlay_i 390 WRITE(zchar1,'(I 1)') jk391 znam = 'tempt'//'_il'// zchar1//'_htc'//zchar374 WRITE(zchar1,'(I2)') jk 375 znam = 'tempt'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 392 376 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 393 377 e_i(:,:,jk,jl) = z2d(:,:) … … 404 388 405 389 DO jl = 1, jpl 406 WRITE(zchar,'(I 1)') jl407 znam = 'sxice'//'_htc'// zchar390 WRITE(zchar,'(I2)') jl 391 znam = 'sxice'//'_htc'//TRIM(ADJUSTL(zchar)) 408 392 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 409 393 sxice(:,:,jl) = z2d(:,:) 410 znam = 'syice'//'_htc'// zchar394 znam = 'syice'//'_htc'//TRIM(ADJUSTL(zchar)) 411 395 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 412 396 syice(:,:,jl) = z2d(:,:) 413 znam = 'sxxice'//'_htc'// zchar397 znam = 'sxxice'//'_htc'//TRIM(ADJUSTL(zchar)) 414 398 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 415 399 sxxice(:,:,jl) = z2d(:,:) 416 znam = 'syyice'//'_htc'// zchar400 znam = 'syyice'//'_htc'//TRIM(ADJUSTL(zchar)) 417 401 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 418 402 syyice(:,:,jl) = z2d(:,:) 419 znam = 'sxyice'//'_htc'// zchar403 znam = 'sxyice'//'_htc'//TRIM(ADJUSTL(zchar)) 420 404 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 421 405 sxyice(:,:,jl) = z2d(:,:) 422 znam = 'sxsn'//'_htc'// zchar406 znam = 'sxsn'//'_htc'//TRIM(ADJUSTL(zchar)) 423 407 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 424 408 sxsn(:,:,jl) = z2d(:,:) 425 znam = 'sysn'//'_htc'// zchar409 znam = 'sysn'//'_htc'//TRIM(ADJUSTL(zchar)) 426 410 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 427 411 sysn(:,:,jl) = z2d(:,:) 428 znam = 'sxxsn'//'_htc'// zchar412 znam = 'sxxsn'//'_htc'//TRIM(ADJUSTL(zchar)) 429 413 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 430 414 sxxsn(:,:,jl) = z2d(:,:) 431 znam = 'syysn'//'_htc'// zchar415 znam = 'syysn'//'_htc'//TRIM(ADJUSTL(zchar)) 432 416 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 433 417 syysn(:,:,jl) = z2d(:,:) 434 znam = 'sxysn'//'_htc'// zchar418 znam = 'sxysn'//'_htc'//TRIM(ADJUSTL(zchar)) 435 419 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 436 420 sxysn(:,:,jl) = z2d(:,:) 437 znam = 'sxa'//'_htc'// zchar421 znam = 'sxa'//'_htc'//TRIM(ADJUSTL(zchar)) 438 422 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 439 423 sxa(:,:,jl) = z2d(:,:) 440 znam = 'sya'//'_htc'// zchar424 znam = 'sya'//'_htc'//TRIM(ADJUSTL(zchar)) 441 425 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 442 426 sya(:,:,jl) = z2d(:,:) 443 znam = 'sxxa'//'_htc'// zchar427 znam = 'sxxa'//'_htc'//TRIM(ADJUSTL(zchar)) 444 428 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 445 429 sxxa(:,:,jl) = z2d(:,:) 446 znam = 'syya'//'_htc'// zchar430 znam = 'syya'//'_htc'//TRIM(ADJUSTL(zchar)) 447 431 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 448 432 syya(:,:,jl) = z2d(:,:) 449 znam = 'sxya'//'_htc'// zchar433 znam = 'sxya'//'_htc'//TRIM(ADJUSTL(zchar)) 450 434 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 451 435 sxya(:,:,jl) = z2d(:,:) 452 znam = 'sxc0'//'_htc'// zchar436 znam = 'sxc0'//'_htc'//TRIM(ADJUSTL(zchar)) 453 437 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 454 438 sxc0(:,:,jl) = z2d(:,:) 455 znam = 'syc0'//'_htc'// zchar439 znam = 'syc0'//'_htc'//TRIM(ADJUSTL(zchar)) 456 440 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 457 441 syc0(:,:,jl) = z2d(:,:) 458 znam = 'sxxc0'//'_htc'// zchar442 znam = 'sxxc0'//'_htc'//TRIM(ADJUSTL(zchar)) 459 443 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 460 444 sxxc0(:,:,jl) = z2d(:,:) 461 znam = 'syyc0'//'_htc'// zchar445 znam = 'syyc0'//'_htc'//TRIM(ADJUSTL(zchar)) 462 446 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 463 447 syyc0(:,:,jl) = z2d(:,:) 464 znam = 'sxyc0'//'_htc'// zchar448 znam = 'sxyc0'//'_htc'//TRIM(ADJUSTL(zchar)) 465 449 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 466 450 sxyc0(:,:,jl) = z2d(:,:) 467 znam = 'sxsal'//'_htc'// zchar451 znam = 'sxsal'//'_htc'//TRIM(ADJUSTL(zchar)) 468 452 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 469 453 sxsal(:,:,jl) = z2d(:,:) 470 znam = 'sysal'//'_htc'// zchar454 znam = 'sysal'//'_htc'//TRIM(ADJUSTL(zchar)) 471 455 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 472 456 sysal(:,:,jl) = z2d(:,:) 473 znam = 'sxxsal'//'_htc'// zchar457 znam = 'sxxsal'//'_htc'//TRIM(ADJUSTL(zchar)) 474 458 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 475 459 sxxsal(:,:,jl) = z2d(:,:) 476 znam = 'syysal'//'_htc'// zchar460 znam = 'syysal'//'_htc'//TRIM(ADJUSTL(zchar)) 477 461 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 478 462 syysal(:,:,jl) = z2d(:,:) 479 znam = 'sxysal'//'_htc'// zchar463 znam = 'sxysal'//'_htc'//TRIM(ADJUSTL(zchar)) 480 464 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 481 465 sxysal(:,:,jl) = z2d(:,:) 482 znam = 'sxage'//'_htc'// zchar466 znam = 'sxage'//'_htc'//TRIM(ADJUSTL(zchar)) 483 467 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 484 468 sxage(:,:,jl) = z2d(:,:) 485 znam = 'syage'//'_htc'// zchar469 znam = 'syage'//'_htc'//TRIM(ADJUSTL(zchar)) 486 470 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 487 471 syage(:,:,jl) = z2d(:,:) 488 znam = 'sxxage'//'_htc'// zchar472 znam = 'sxxage'//'_htc'//TRIM(ADJUSTL(zchar)) 489 473 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 490 474 sxxage(:,:,jl) = z2d(:,:) 491 znam = 'syyage'//'_htc'// zchar475 znam = 'syyage'//'_htc'//TRIM(ADJUSTL(zchar)) 492 476 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 493 477 syyage(:,:,jl) = z2d(:,:) 494 znam = 'sxyage'//'_htc'// zchar478 znam = 'sxyage'//'_htc'//TRIM(ADJUSTL(zchar)) 495 479 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 496 480 sxyage(:,:,jl)= z2d(:,:) … … 504 488 505 489 DO jl = 1, jpl 506 WRITE(zchar,'(I 1)') jl490 WRITE(zchar,'(I2)') jl 507 491 DO jk = 1, nlay_i 508 WRITE(zchar1,'(I 1)') jk509 znam = 'sxe'//'_il'// zchar1//'_htc'//zchar492 WRITE(zchar1,'(I2)') jk 493 znam = 'sxe'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 510 494 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 511 495 sxe(:,:,jk,jl) = z2d(:,:) 512 znam = 'sye'//'_il'// zchar1//'_htc'//zchar496 znam = 'sye'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 513 497 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 514 498 sye(:,:,jk,jl) = z2d(:,:) 515 znam = 'sxxe'//'_il'// zchar1//'_htc'//zchar499 znam = 'sxxe'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 516 500 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 517 501 sxxe(:,:,jk,jl) = z2d(:,:) 518 znam = 'syye'//'_il'// zchar1//'_htc'//zchar502 znam = 'syye'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 519 503 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 520 504 syye(:,:,jk,jl) = z2d(:,:) 521 znam = 'sxye'//'_il'// zchar1//'_htc'//zchar505 znam = 'sxye'//'_il'//TRIM(ADJUSTL(zchar1))//'_htc'//TRIM(ADJUSTL(zchar)) 522 506 CALL iom_get( numrir, jpdom_autoglo, znam , z2d ) 523 507 sxye(:,:,jk,jl) = z2d(:,:) -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r7256 r7806 613 613 CALL tab_1d_2d( nbpb, qns_ice(:,:,jl), npb, qns_ice_1d(1:nbpb) , jpi, jpj) 614 614 CALL tab_1d_2d( nbpb, ftr_ice(:,:,jl), npb, ftr_ice_1d(1:nbpb) , jpi, jpj ) 615 !616 615 END SELECT 617 616 … … 633 632 INTEGER :: ios ! Local integer output status for namelist read 634 633 NAMELIST/namicethd/ rn_hnewice, ln_frazil, rn_maxfrazb, rn_vfrazb, rn_Cfrazb, & 635 & rn_himin, rn_betas, rn_kappa_i, nn_conv_dif, rn_terr_dif, nn_ice_thcon, &636 & nn_monocat, ln_it_qnsice634 & rn_himin, rn_betas, rn_kappa_i, nn_conv_dif, rn_terr_dif, nn_ice_thcon, & 635 & rn_cdsn, nn_monocat, ln_it_qnsice 637 636 !!------------------------------------------------------------------- 638 637 ! … … 673 672 WRITE(numout,*)' maximal err. on T for heat diffusion computation rn_terr_dif = ', rn_terr_dif 674 673 WRITE(numout,*)' switch for comp. of thermal conductivity in the ice nn_ice_thcon = ', nn_ice_thcon 674 WRITE(numout,*)' thermal conductivity of the snow rn_cdsn = ', rn_cdsn 675 675 WRITE(numout,*)' check heat conservation in the ice/snow con_i = ', con_i 676 676 WRITE(numout,*)' virtual ITD mono-category parameterizations (1) or not nn_monocat = ', nn_monocat -
branches/2015/dev_r5003_MERCATOR6_CRS/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90
r5602 r7806 376 376 377 377 ! Effective thickness he (zhe) 378 zfac = 1._wp / ( r cdsn + zkimean )379 zratio_s = r cdsn * zfac378 zfac = 1._wp / ( rn_cdsn + zkimean ) 379 zratio_s = rn_cdsn * zfac 380 380 zratio_i = zkimean * zfac 381 381 zhe = zratio_s * ht_i_1d(ji) + zratio_i * ht_s_1d(ji) … … 400 400 DO ji = kideb, kiut 401 401 zfac = 1. / MAX( epsi10 , zh_s(ji) ) 402 zkappa_s(ji,0) = zghe(ji) * r cdsn * zfac403 zkappa_s(ji,nlay_s) = zghe(ji) * r cdsn * zfac402 zkappa_s(ji,0) = zghe(ji) * rn_cdsn * zfac 403 zkappa_s(ji,nlay_s) = zghe(ji) * rn_cdsn * zfac 404 404 END DO 405 405 406 406 DO jk = 1, nlay_s-1 407 407 DO ji = kideb , kiut 408 zkappa_s(ji,jk) = zghe(ji) * 2.0 * r cdsn / MAX( epsi10, 2.0 * zh_s(ji) )408 zkappa_s(ji,jk) = zghe(ji) * 2.0 * rn_cdsn / MAX( epsi10, 2.0 * zh_s(ji) ) 409 409 END DO 410 410 END DO … … 422 422 zkappa_i(ji,0) = zghe(ji) * ztcond_i(ji,0) * zfac 423 423 zkappa_i(ji,nlay_i) = zghe(ji) * ztcond_i(ji,nlay_i) * zfac 424 zkappa_s(ji,nlay_s) = zghe(ji) * zghe(ji) * 2.0 * r cdsn * ztcond_i(ji,0) / &425 & MAX( epsi10, ( zghe(ji) * ztcond_i(ji,0) * zh_s(ji) + zghe(ji) * r cdsn * zh_i(ji) ) )424 zkappa_s(ji,nlay_s) = zghe(ji) * zghe(ji) * 2.0 * rn_cdsn * ztcond_i(ji,0) / & 425 & MAX( epsi10, ( zghe(ji) * ztcond_i(ji,0) * zh_s(ji) + zghe(ji) * rn_cdsn * zh_i(ji) ) ) 426 426 zkappa_i(ji,0) = zkappa_s(ji,nlay_s) * isnow(ji) + zkappa_i(ji,0) * ( 1._wp - isnow(ji) ) 427 427 END DO … … 697 697 & ( isnow(ji) * t_s_1d(ji,1) + ( 1._wp - isnow(ji) ) * t_i_1d(ji,1) ) ) / zdiagbis(ji,numeqmin(ji)) 698 698 END DO 699 699 700 ! 700 701 !--------------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.