Changeset 4293


Ignore:
Timestamp:
2013-11-20T17:56:18+01:00 (8 years ago)
Author:
clem
Message:

small corrections for ice categories hi_max and for shifting ice between categories

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  
    7171         &     'use more ocean levels or less ice/snow layers/categories.' ) 
    7272 
    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 ) 
    7775      ! 
    7876      CALL ice_run                     ! set some ice run parameters 
     
    103101      ENDIF 
    104102      ! 
     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      ! 
    105105      CALL lim_sbc_init                ! ice surface boundary condition    
    106106      ! 
     
    129129      !!------------------------------------------------------------------- 
    130130      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 read 
    132131      !!------------------------------------------------------------------- 
    133132      !                     
    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 
    147140      ! 
    148141      IF(lwp) THEN                        ! control print 
     
    168161      !! ** Purpose :   Initializes the ice thickness distribution 
    169162      !! ** 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 
    170165      !!------------------------------------------------------------------ 
    171166      INTEGER  ::   jl, jm               ! dummy loop index 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90

    r4161 r4293  
    183183      ! 1) Thickness categories boundaries, ice / o.w. concentrations, init_ons 
    184184      !-----------------------------------------------------------------------------! 
    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.99 
    188  
    189185      Cp = 0.5 * grav * (rau0-rhoic) * rhoic / rau0                ! proport const for PE 
    190186      ! 
     
    14811477      !! ** input   :   Namelist namiceitdme 
    14821478      !!------------------------------------------------------------------- 
    1483       INTEGER :: ios                 ! Local integer output status for namelist read 
    14841479      NAMELIST/namiceitdme/ ridge_scheme_swi, Cs, Cf, fsnowrdg, fsnowrft,&  
    14851480         Gstar, astar,                                & 
     
    14891484      !!------------------------------------------------------------------- 
    14901485      ! 
    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) 
    14991488      ! 
    15001489      IF (lwp) THEN                          ! control print 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90

    r4161 r4293  
    321321      ! Tricky trick see limitd_me.F90 
    322322      ! will be soon removed, CT 
    323       ! hi_max(kubnd) = 999.99 
     323      ! hi_max(kubnd) = 99. 
    324324      zhbnew(:,:,:) = 0._wp 
    325325 
     
    402402               zhbnew(ji,jj,kubnd) = 3._wp * ht_i(ji,jj,kubnd) - 2._wp * zhbnew(ji,jj,kubnd-1) 
    403403            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  
    405407            ENDIF 
    406408 
     
    10091011                  !zdaice(ji,jj,jl)  = a_i(ji,jj,jl) 
    10101012                  !zdvice(ji,jj,jl)  = v_i(ji,jj,jl) 
    1011                   zdaice(ji,jj,jl)  = a_i(ji,jj,jl)/2 
    1012                   zdvice(ji,jj,jl)  = v_i(ji,jj,jl)-zdaice(ji,jj,jl)*(hi_max(jl)+hi_max(jl-1))/2 
     1013                  !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 
    10131015                  ! 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 ) 
    10141019               ENDIF 
    10151020            END DO                 ! ji 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/limupdate1.F90

    r4161 r4293  
    198198!      !ENDIF 
    199199! 
    200       zhimax = .3_wp 
     200      zhimax = 5._wp 
    201201      ! first category 
    202202      DO jj = 1, jpj 
     
    205205            !--- thus we recompute a new area while conserving ice volume 
    206206            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 line 
    211                ht_i(ji,jj,1) = hi_max(1) / 2.0 
     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 line 
     211               ht_i(ji,jj,1) = hi_max(1) * 0.5_wp 
    212212               a_i (ji,jj,1) = v_i(ji,jj,1) / ht_i(ji,jj,1) 
    213213            ENDIF 
     
    228228!      !ENDIF 
    229229 
    230       zhimax = 1._wp 
     230      zhimax = 20._wp 
    231231      ! other categories 
    232232      DO jl = 2, jpl 
     
    234234         DO jj = 1, jpj 
    235235            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 ) )  
    237237               ! this correction is very tricky... sometimes, advection gets wrong i don't know why 
    238238               ! it makes problems when the advected volume and concentration do not seem to be  
     
    242242               ! which of course is plausible 
    243243               ! 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 ) 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) ) / 2.0 
     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 ) 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 
    247247                  a_i (ji,jj,jl) = v_i(ji,jj,jl) / ht_i(ji,jj,jl) 
    248248               ENDIF 
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90

    r4161 r4293  
    194194!      !ENDIF 
    195195 
    196       zhimax = .3_wp 
     196      zhimax = 5._wp 
    197197      ! first category 
    198198      DO jj = 1, jpj 
     
    201201            !--- thus we recompute a new area while conserving ice volume 
    202202            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 line 
    207                ht_i(ji,jj,1) = hi_max(1) / 2.0 
     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 line 
     207               ht_i(ji,jj,1) = hi_max(1) * 0.5_wp 
    208208               a_i (ji,jj,1) = v_i(ji,jj,1) / ht_i(ji,jj,1) 
    209209            ENDIF 
     
    223223!      !ENDIF 
    224224!  
    225       zhimax = 1._wp 
     225      zhimax = 20._wp 
    226226      ! other categories 
    227227      DO jl = 2, jpl 
     
    229229         DO jj = 1, jpj 
    230230            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 ) )  
    232232              ! this correction is very tricky... sometimes, advection gets wrong i don't know why 
    233233               ! it makes problems when the advected volume and concentration do not seem to be  
     
    237237               ! which of course is plausible 
    238238               ! 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 ) 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) ) / 2.0 
     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 ) 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 
    242242                  a_i (ji,jj,jl) = v_i(ji,jj,jl) / ht_i(ji,jj,jl) 
    243243               ENDIF 
Note: See TracChangeset for help on using the changeset viewer.