Changeset 4293 for branches/2013/dev_MERGE_2013
- Timestamp:
- 2013-11-20T17:56:18+01:00 (10 years ago)
- Location:
- branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90
r4205 r4293 71 71 & 'use more ocean levels or less ice/snow layers/categories.' ) 72 72 73 ! Open the reference and configuration namelist files and namelist output file 74 CALL ctl_opn( numnam_ice_ref, 'namelist_ice_ref', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 75 CALL ctl_opn( numnam_ice_cfg, 'namelist_ice_cfg', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 76 CALL ctl_opn( numoni, 'output.namelist.ice', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 73 ! ! Open the namelist file 74 CALL ctl_opn( numnam_ice, 'namelist_ice', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, numout, lwp ) 77 75 ! 78 76 CALL ice_run ! set some ice run parameters … … 103 101 ENDIF 104 102 ! 103 hi_max(jpl) = 99._wp ! Set hi_max(jpl) to a big value to ensure that all ice is thinner than hi_max(jpl) 104 ! 105 105 CALL lim_sbc_init ! ice surface boundary condition 106 106 ! … … 129 129 !!------------------------------------------------------------------- 130 130 NAMELIST/namicerun/ cn_icerst_in, cn_icerst_out, ln_limdyn, amax, cai, cao, ln_nicep, ln_limdiahsb, ln_limdiaout 131 INTEGER :: ios ! Local integer output status for namelist read132 131 !!------------------------------------------------------------------- 133 132 ! 134 REWIND( numnam_ice_ref ) ! Namelist namicerun in reference namelist : Parameters for ice 135 READ ( numnam_ice_ref, namicerun, IOSTAT = ios, ERR = 901) 136 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namicerun in reference namelist', lwp ) 137 138 REWIND( numnam_ice_cfg ) ! Namelist namicerun in configuration namelist : Parameters for ice 139 READ ( numnam_ice_cfg, namicerun, IOSTAT = ios, ERR = 902 ) 140 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namicerun in configuration namelist', lwp ) 141 WRITE ( numoni, namicerun ) 142 ! 143 IF( lk_mpp .AND. ln_nicep ) THEN 144 ln_nicep = .FALSE. 145 CALL ctl_warn( 'ice_run : specific control print for LIM3 desactivated with MPI' ) 146 ENDIF 133 REWIND( numnam_ice ) ! Read Namelist namicerun 134 READ ( numnam_ice , namicerun ) 135 ! 136 !IF( lk_mpp .AND. ln_nicep ) THEN 137 ! ln_nicep = .FALSE. 138 ! CALL ctl_warn( 'ice_run : specific control print for LIM3 desactivated with MPI' ) 139 !ENDIF 147 140 ! 148 141 IF(lwp) THEN ! control print … … 168 161 !! ** Purpose : Initializes the ice thickness distribution 169 162 !! ** Method : ... 163 !! Note : hi_max(jpl) is here set up to a value close to 7 m for 164 !! limistate (only) and is changed to 99 m in ice_init 170 165 !!------------------------------------------------------------------ 171 166 INTEGER :: jl, jm ! dummy loop index -
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
r4161 r4293 183 183 ! 1) Thickness categories boundaries, ice / o.w. concentrations, init_ons 184 184 !-----------------------------------------------------------------------------! 185 ! Set hi_max(ncat) to a big value to ensure that all ridged ice is thinner than hi_max(ncat).186 187 hi_max(jpl) = 999.99188 189 185 Cp = 0.5 * grav * (rau0-rhoic) * rhoic / rau0 ! proport const for PE 190 186 ! … … 1481 1477 !! ** input : Namelist namiceitdme 1482 1478 !!------------------------------------------------------------------- 1483 INTEGER :: ios ! Local integer output status for namelist read1484 1479 NAMELIST/namiceitdme/ ridge_scheme_swi, Cs, Cf, fsnowrdg, fsnowrft,& 1485 1480 Gstar, astar, & … … 1489 1484 !!------------------------------------------------------------------- 1490 1485 ! 1491 REWIND( numnam_ice_ref ) ! Namelist namicetdme in reference namelist : Ice mechanical ice redistribution 1492 READ ( numnam_ice_ref, namiceitdme, IOSTAT = ios, ERR = 901) 1493 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namiceitdme in reference namelist', lwp ) 1494 1495 REWIND( numnam_ice_cfg ) ! Namelist namiceitdme in configuration namelist : Ice mechanical ice redistribution 1496 READ ( numnam_ice_cfg, namiceitdme, IOSTAT = ios, ERR = 902 ) 1497 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namiceitdme in configuration namelist', lwp ) 1498 WRITE ( numoni, namiceitdme ) 1486 REWIND( numnam_ice ) ! read namiceitdme namelist 1487 READ ( numnam_ice , namiceitdme) 1499 1488 ! 1500 1489 IF (lwp) THEN ! control print -
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90
r4161 r4293 321 321 ! Tricky trick see limitd_me.F90 322 322 ! will be soon removed, CT 323 ! hi_max(kubnd) = 99 9.99323 ! hi_max(kubnd) = 99. 324 324 zhbnew(:,:,:) = 0._wp 325 325 … … 402 402 zhbnew(ji,jj,kubnd) = 3._wp * ht_i(ji,jj,kubnd) - 2._wp * zhbnew(ji,jj,kubnd-1) 403 403 ELSE 404 zhbnew(ji,jj,kubnd) = hi_max(kubnd) 404 zhbnew(ji,jj,kubnd) = hi_max(kubnd) 405 !!? clem bug: since hi_max(jpl)=99, this limit is very high 406 !!? but I think it is erased in fitline subroutine 405 407 ENDIF 406 408 … … 1009 1011 !zdaice(ji,jj,jl) = a_i(ji,jj,jl) 1010 1012 !zdvice(ji,jj,jl) = v_i(ji,jj,jl) 1011 zdaice(ji,jj,jl) = a_i(ji,jj,jl)/21012 zdvice(ji,jj,jl) = v_i(ji,jj,jl)-zdaice(ji,jj,jl)*(hi_max(jl)+hi_max(jl-1))/21013 !zdaice(ji,jj,jl) = a_i(ji,jj,jl) * 0.5_wp 1014 !zdvice(ji,jj,jl) = v_i(ji,jj,jl)-zdaice(ji,jj,jl)*(hi_max(jl)+hi_max(jl-1)) * 0.5_wp 1013 1015 ! end TECLIM change 1016 ! clem: how much of a_i you send in cat sup is somewhat arbitrary 1017 zdaice(ji,jj,jl) = a_i(ji,jj,jl) * ( ht_i(ji,jj,jl) - hi_max(jl) ) / ht_i(ji,jj,jl) 1018 zdvice(ji,jj,jl) = v_i(ji,jj,jl) - ( a_i(ji,jj,jl) - zdaice(ji,jj,jl) ) * ( hi_max(jl) - epsi10 ) 1014 1019 ENDIF 1015 1020 END DO ! ji -
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/limupdate1.F90
r4161 r4293 198 198 ! !ENDIF 199 199 ! 200 zhimax = .3_wp200 zhimax = 5._wp 201 201 ! first category 202 202 DO jj = 1, jpj … … 205 205 !--- thus we recompute a new area while conserving ice volume 206 206 zat_i_old = SUM( old_a_i(ji,jj,:) ) 207 zindb = MAX( 0._wp, SIGN( 1._wp, ABS( d_a_i_trp(ji,jj,1) ) - epsi10 ) )208 IF ( ( ABS(d_v_i_trp(ji,jj,1))/MAX(ABS(d_a_i_trp(ji,jj,1)),epsi10)*zindb .GT. zhimax) &209 .AND.( ( v_i(ji,jj,1)/MAX(a_i(ji,jj,1),epsi10)*zindb) .GT. zhimax ) &210 .AND.( zat_i_old .LT. 1.e-6 ) ) THEN ! new line211 ht_i(ji,jj,1) = hi_max(1) / 2.0207 zindb = MAX( 0._wp, SIGN( 1._wp, ABS( d_a_i_trp(ji,jj,1) ) - epsi10 ) ) 208 IF( ( ABS( d_v_i_trp(ji,jj,1) ) / MAX( ABS( d_a_i_trp(ji,jj,1) ), epsi10 ) * zindb .GT. zhimax ) & 209 & .AND.( ( v_i(ji,jj,1) / MAX( a_i(ji,jj,1), epsi10 ) * zindb ) .GT. zhimax ) & 210 & .AND.( zat_i_old .LT. 1.e-6 ) ) THEN ! new line 211 ht_i(ji,jj,1) = hi_max(1) * 0.5_wp 212 212 a_i (ji,jj,1) = v_i(ji,jj,1) / ht_i(ji,jj,1) 213 213 ENDIF … … 228 228 ! !ENDIF 229 229 230 zhimax = 1._wp230 zhimax = 20._wp 231 231 ! other categories 232 232 DO jl = 2, jpl … … 234 234 DO jj = 1, jpj 235 235 DO ji = 1, jpi 236 zindb = MAX( rzero, SIGN( rone, ABS( d_a_i_trp(ji,jj,jl)) - epsi10 ) )236 zindb = MAX( rzero, SIGN( rone, ABS( d_a_i_trp(ji,jj,jl) ) - epsi10 ) ) 237 237 ! this correction is very tricky... sometimes, advection gets wrong i don't know why 238 238 ! it makes problems when the advected volume and concentration do not seem to be … … 242 242 ! which of course is plausible 243 243 ! but fuck! it fucks everything up :) 244 IF ( ( ABS(d_v_i_trp(ji,jj,jl))/MAX(ABS(d_a_i_trp(ji,jj,jl)),epsi10)*zindb .GT. zhimax) &245 .AND.(v_i(ji,jj,jl)/MAX(a_i(ji,jj,jl),epsi10)*zindb) .GT. zhimax ) THEN246 ht_i(ji,jj,jl) = ( hi_max_typ(jl-ice_cat_bounds(jm,1),jm) + hi_max_typ(jl-ice_cat_bounds(jm,1)+1,jm) ) / 2.0244 IF ( ( ABS( d_v_i_trp(ji,jj,jl) ) / MAX( ABS( d_a_i_trp(ji,jj,jl) ), epsi10 ) * zindb .GT. zhimax ) & 245 & .AND. ( v_i(ji,jj,jl) / MAX( a_i(ji,jj,jl), epsi10 ) * zindb ) .GT. zhimax ) THEN 246 ht_i(ji,jj,jl) = ( hi_max_typ(jl-ice_cat_bounds(jm,1),jm) + hi_max_typ(jl-ice_cat_bounds(jm,1)+1,jm) ) * 0.5_wp 247 247 a_i (ji,jj,jl) = v_i(ji,jj,jl) / ht_i(ji,jj,jl) 248 248 ENDIF -
branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90
r4161 r4293 194 194 ! !ENDIF 195 195 196 zhimax = .3_wp196 zhimax = 5._wp 197 197 ! first category 198 198 DO jj = 1, jpj … … 201 201 !--- thus we recompute a new area while conserving ice volume 202 202 zat_i_old = SUM( old_a_i(ji,jj,:) ) 203 zindb = MAX( 0._wp, SIGN( 1._wp, ABS( d_a_i_thd(ji,jj,1) ) - epsi10 ) )204 IF ( ( ABS( d_v_i_thd(ji,jj,1))/MAX(ABS(d_a_i_thd(ji,jj,1)),epsi10)*zindb .GT. zhimax) &205 .AND.( ( v_i(ji,jj,1)/MAX(a_i(ji,jj,1),epsi10)*zindb) .GT. zhimax ) &206 .AND.( zat_i_old .LT. 1.e-6 ) ) THEN ! new line207 ht_i(ji,jj,1) = hi_max(1) / 2.0203 zindb = MAX( 0._wp, SIGN( 1._wp, ABS( d_a_i_thd(ji,jj,1) ) - epsi10 ) ) 204 IF ( ( ABS( d_v_i_thd(ji,jj,1) ) / MAX( ABS( d_a_i_thd(ji,jj,1) ),epsi10 ) * zindb .GT. zhimax ) & 205 & .AND. ( ( v_i(ji,jj,1) / MAX( a_i(ji,jj,1), epsi10 ) * zindb ) .GT. zhimax ) & 206 & .AND. ( zat_i_old .LT. 1.e-6 ) ) THEN ! new line 207 ht_i(ji,jj,1) = hi_max(1) * 0.5_wp 208 208 a_i (ji,jj,1) = v_i(ji,jj,1) / ht_i(ji,jj,1) 209 209 ENDIF … … 223 223 ! !ENDIF 224 224 ! 225 zhimax = 1._wp225 zhimax = 20._wp 226 226 ! other categories 227 227 DO jl = 2, jpl … … 229 229 DO jj = 1, jpj 230 230 DO ji = 1, jpi 231 zindb = MAX( rzero, SIGN( rone, ABS( d_a_i_thd(ji,jj,jl)) - epsi10 ) )231 zindb = MAX( rzero, SIGN( rone, ABS( d_a_i_thd(ji,jj,jl)) - epsi10 ) ) 232 232 ! this correction is very tricky... sometimes, advection gets wrong i don't know why 233 233 ! it makes problems when the advected volume and concentration do not seem to be … … 237 237 ! which of course is plausible 238 238 ! but fuck! it fucks everything up :) 239 IF ( ( ABS(d_v_i_thd(ji,jj,jl))/MAX(ABS(d_a_i_thd(ji,jj,jl)),epsi10)*zindb .GT. zhimax) &240 .AND.(v_i(ji,jj,jl)/MAX(a_i(ji,jj,jl),epsi10)*zindb) .GT. zhimax ) THEN241 ht_i(ji,jj,jl) = ( hi_max_typ(jl-ice_cat_bounds(jm,1),jm) + hi_max_typ(jl-ice_cat_bounds(jm,1)+1,jm) ) / 2.0239 IF ( ( ABS( d_v_i_thd(ji,jj,jl) ) / MAX( ABS( d_a_i_thd(ji,jj,jl) ), epsi10 ) * zindb .GT. zhimax ) & 240 & .AND. ( v_i(ji,jj,jl) / MAX( a_i(ji,jj,jl), epsi10 ) * zindb ) .GT. zhimax ) THEN 241 ht_i(ji,jj,jl) = ( hi_max_typ(jl-ice_cat_bounds(jm,1),jm) + hi_max_typ(jl-ice_cat_bounds(jm,1)+1,jm) ) * 0.5_wp 242 242 a_i (ji,jj,jl) = v_i(ji,jj,jl) / ht_i(ji,jj,jl) 243 243 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.