New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 833 for trunk/NEMO/OPA_SRC/SBC/albedo.F90 – NEMO

Ignore:
Timestamp:
2008-03-07T14:51:35+01:00 (16 years ago)
Author:
rblod
Message:

Merge branche dev_002_LIM back to trunk ticket #70 and #71

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/SBC/albedo.F90

    r719 r833  
    3737      c1     = 0.05  ,     &   ! constants values 
    3838      c2     = 0.10  ,     & 
     39#if defined key_lim3 
     40      albice = 0.53  ,     &   !  albedo of melting ice in the arctic and antarctic (Shine & Hendersson-Sellers) 
     41#else 
    3942      albice = 0.50  ,     &   !  albedo of melting ice in the arctic and antarctic (Shine & Hendersson-Sellers) 
     43#endif 
    4044      cgren  = 0.06  ,     &   !  correction of the snow or ice albedo to take into account 
    4145                               !  effects of cloudiness (Grenfell & Perovich, 1984) 
     
    5357CONTAINS 
    5458 
    55 #if defined key_ice_lim 
    56    !!---------------------------------------------------------------------- 
    57    !!   'key_ice_lim'                                         LIM ice model 
     59#if defined key_lim3 || defined key_lim2 
     60   !!---------------------------------------------------------------------- 
     61   !!   'key_lim3' OR 'key_lim2'               LIM 2.0 or LIM 3.0 ice model 
    5862   !!---------------------------------------------------------------------- 
    5963 
     
    7579      !!  8.0   !  01-04  (LIM 1.0) 
    7680      !!  8.5   !  03-07  (C. Ethe, G. Madec)  Optimization (old name:shine) 
     81      !!  9.0   !  01-06  (M. Vancoppenolle) LIM 3.0 
    7782      !!---------------------------------------------------------------------- 
    7883      !! * Modules used 
     84#if defined key_lim3 
     85      USE par_ice 
    7986      USE ice                   ! ??? 
     87#elif defined key_lim2 
     88      USE ice_2                 ! ??? 
     89#endif 
    8090 
    8191      !! * Arguments 
     92#if defined key_lim3 
     93      REAL(wp), DIMENSION(jpi,jpj,jpl), INTENT(out) ::  & 
     94#elif defined key_lim2 
    8295      REAL(wp), DIMENSION(jpi,jpj), INTENT(out) ::  & 
     96#endif 
    8397         palb         ,     &    !  albedo of ice under overcast sky 
     98         palbp                   !  albedo of ice under clear sky  
     99      REAL(wp), DIMENSION(jpi,jpj), INTENT(out) ::  & 
    84100         palcn        ,     &    !  albedo of ocean under overcast sky 
    85          palbp        ,     &    !  albedo of ice under clear sky  
    86101         palcnp                  !  albedo of ocean under clear sky 
    87102 
    88103      !! * Local variables 
    89104      INTEGER ::    & 
    90          ji, jj                   ! dummy loop indices 
     105         ji, jj, jl               ! dummy loop indices 
    91106      REAL(wp) ::   &  
    92107         zmue14         ,     &   !  zmue**1.4 
     
    96111         zalbpic        ,     &   !  albedo of snow/ice system when ice is free of snow 
    97112         zithsn         ,     &   !  = 1 for hsn >= 0 ( ice is cov. by snow ) ; = 0 otherwise (ice is free of snow) 
    98          zitmlsn        ,     &   !  = 1 freezinz snow (sist >=rt0_snow) ; = 0 melting snow (sist<rt0_snow) 
     113         zitmlsn        ,     &   !  = 1 freezinz snow (t_su >=rt0_snow) ; = 0 melting snow (t_su<rt0_snow) 
    99114         zihsc1         ,     &   !  = 1 hsn <= c1 ; = 0 hsn > c1 
    100115         zihsc2                   !  = 1 hsn >= c2 ; = 0 hsn < c2 
     116#if defined key_lim3 
     117      REAL(wp), DIMENSION(jpi,jpj,jpl) ::  & 
     118#elif defined key_lim2 
    101119      REAL(wp), DIMENSION(jpi,jpj) ::  & 
     120#endif 
    102121         zalbfz         ,     &   !  ( = alphdi for freezing ice ; = albice for melting ice ) 
    103122         zficeth                  !  function of ice thickness 
     123#if defined key_lim3 
     124      LOGICAL , DIMENSION(jpi,jpj,jpl) ::  & 
     125#elif defined key_lim2 
    104126      LOGICAL , DIMENSION(jpi,jpj) ::  & 
     127#endif 
    105128         llmask 
    106129      !!--------------------------------------------------------------------- 
     
    112135      !  Computation of  zficeth 
    113136      !--------------------------  
    114        
     137#if defined key_lim3 
     138      llmask = (ht_s(:,:,:) == 0.e0) .AND. ( t_su(:,:,:) >= rt0_ice ) 
     139#elif defined key_lim2       
    115140      llmask = (hsnif == 0.e0) .AND. ( sist >= rt0_ice ) 
     141#endif 
    116142      WHERE ( llmask )   !  ice free of snow and melts 
    117143         zalbfz = albice 
     
    120146      END WHERE 
    121147       
     148#if defined key_lim3 
     149      DO jl = 1, jpl 
     150         DO jj = 1, jpj 
     151            DO ji = 1, jpi 
     152               IF( ht_i(ji,jj,jl) > 1.5 ) THEN 
     153                  zficeth(ji,jj,jl) = zalbfz(ji,jj,jl) 
     154               ELSEIF( ht_i(ji,jj,jl) > 1.0  .AND. ht_i(ji,jj,jl) <= 1.5 ) THEN 
     155                  zficeth(ji,jj,jl) = 0.472 + 2.0 * ( zalbfz(ji,jj,jl) - 0.472 ) * ( ht_i(ji,jj,jl) - 1.0 ) 
     156               ELSEIF( ht_i(ji,jj,jl) > 0.05 .AND. ht_i(ji,jj,jl) <= 1.0 ) THEN 
     157                  zficeth(ji,jj,jl) = 0.2467 + 0.7049 * ht_i(ji,jj,jl)                               & 
     158                     &                    - 0.8608 * ht_i(ji,jj,jl) * ht_i(ji,jj,jl)                 & 
     159                     &                    + 0.3812 * ht_i(ji,jj,jl) * ht_i(ji,jj,jl) * ht_i (ji,jj,jl) 
     160               ELSE 
     161                  zficeth(ji,jj,jl) = 0.1 + 3.6 * ht_i(ji,jj,jl)  
     162               ENDIF 
     163            END DO 
     164         END DO 
     165      END DO 
     166#elif defined key_lim2       
    122167      DO jj = 1, jpj 
    123168         DO ji = 1, jpi 
     
    135180         END DO 
    136181      END DO 
     182#endif 
    137183       
    138184      !-----------------------------------------------  
     
    142188      !    Albedo of snow-ice for clear sky. 
    143189      !-----------------------------------------------     
     190#if defined key_lim3 
     191      DO jl = 1, jpl 
     192         DO jj = 1, jpj 
     193            DO ji = 1, jpi 
     194               !  Case of ice covered by snow.              
     195             
     196               !  freezing snow         
     197               zihsc1       = 1.0 - MAX ( zzero , SIGN ( zone , - ( ht_s(ji,jj,jl) - c1 ) ) ) 
     198               zalbpsnf     = ( 1.0 - zihsc1 ) * ( zficeth(ji,jj,jl) + ht_s(ji,jj,jl) * ( alphd - zficeth(ji,jj,jl) ) / c1 ) & 
     199                  &                 + zihsc1   * alphd   
     200 
     201               !  melting snow                 
     202               zihsc2       = MAX ( zzero , SIGN ( zone , ht_s(ji,jj,jl) - c2 ) ) 
     203               zalbpsnm     = ( 1.0 - zihsc2 ) * ( albice + ht_s(ji,jj,jl) * ( alphc - albice ) / c2 )                 & 
     204                  &                 + zihsc2   * alphc  
     205 
     206 
     207               zitmlsn      =  MAX ( zzero , SIGN ( zone , t_su(ji,jj,jl) - rt0_snow ) )    
     208               zalbpsn      =  zitmlsn * zalbpsnm + ( 1.0 - zitmlsn ) * zalbpsnf 
     209             
     210               !  Case of ice free of snow. 
     211               zalbpic      = zficeth(ji,jj,jl)  
     212             
     213               ! albedo of the system    
     214               zithsn       = 1.0 - MAX ( zzero , SIGN ( zone , - ht_s(ji,jj,jl) ) ) 
     215               palbp(ji,jj,jl) =  zithsn * zalbpsn + ( 1.0 - zithsn ) *  zalbpic 
     216            END DO 
     217         END DO 
     218      END DO 
     219       
     220      !    Albedo of snow-ice for overcast sky. 
     221      !----------------------------------------------   
     222      palb(:,:,:)   = palbp(:,:,:) + cgren       ! Oberhuber correction 
     223 
     224#elif defined key_lim2       
     225 
    144226      DO jj = 1, jpj 
    145227         DO ji = 1, jpi 
     
    170252      !----------------------------------------------   
    171253      palb(:,:)   = palbp(:,:) + cgren                                            
     254#endif 
    172255       
    173256      !-------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.