Changeset 3523


Ignore:
Timestamp:
2012-11-01T08:58:07+01:00 (9 years ago)
Author:
gm
Message:

Branch: dev_r3385_NOCS04_HAMF; #665. LIM3 update: bug correction in limtrp and mass flux added in limthd_lac

Location:
branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r3517 r3523  
    641641         dmgwi_1d  (ji) = dmgwi_1d(ji) + a_i_b(ji) * ( ht_s_b(ji) - zhnnew ) * rhosn 
    642642 
    643          rdm_ice_1d(ji) = rdm_ice_1d(ji) + a_i_b(ji) * ( zhgnew(ji) - ht_i_b(ji) ) * rhoic  
     643         ! All snow is thrown in the ocean, and seawater is taken to replace the volume 
     644         rdm_ice_1d(ji) = rdm_ice_1d(ji) + a_i_b(ji) * ( zhgnew(ji) - ht_i_b(ji) ) * rhoic * ( 1. - rhosn / rhoic ) 
    644645         rdm_snw_1d(ji) = rdm_snw_1d(ji) + a_i_b(ji) * ( zhnnew     - ht_s_b(ji) ) * rhosn 
    645646 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r3517 r3523  
    315315         CALL tab_2d_1d( nbpac, t_bo_b    (1:nbpac)     , t_bo  , jpi, jpj, npac(1:nbpac) ) 
    316316         CALL tab_2d_1d( nbpac, fseqv_1d  (1:nbpac)     , fseqv , jpi, jpj, npac(1:nbpac) ) 
     317         CALL tab_2d_1d( nbpac, rdm_ice_1d(1:nbpac)     , rdm_ice, jpi, jpj, npac(1:nbpac) ) 
    317318         CALL tab_2d_1d( nbpac, hicol_b   (1:nbpac)     , hicol , jpi, jpj, npac(1:nbpac) ) 
    318319         CALL tab_2d_1d( nbpac, zvrel_ac  (1:nbpac)     , zvrel , jpi, jpj, npac(1:nbpac) ) 
     
    391392         ! note that for constant salinity zs_newice() = bulk_sal (see top of the subroutine) 
    392393         DO ji = 1, nbpac 
    393             fseqv_1d(ji) = fseqv_1d(ji) - zs_newice(ji) * rhoic * zv_newice(ji) * r1_rdtice 
     394            fseqv_1d  (ji) = fseqv_1d  (ji) - zs_newice(ji) * rhoic * zv_newice(ji) * r1_rdtice 
     395            rdm_ice_1d(ji) = rdm_ice_1d(ji) +                 rhoic * zv_newice(ji) 
    394396         END DO ! ji 
    395397 
     
    611613            END DO 
    612614         END DO 
    613          CALL tab_1d_2d( nbpac, fseqv , npac(1:nbpac), fseqv_1d  (1:nbpac) , jpi, jpj ) 
     615         CALL tab_1d_2d( nbpac, fseqv  , npac(1:nbpac), fseqv_1d  (1:nbpac), jpi, jpj ) 
     616         CALL tab_1d_2d( nbpac, rdm_ice, npac(1:nbpac), rdm_ice_1d(1:nbpac), jpi, jpj ) 
    614617         ! 
    615618      ENDIF ! nbpac > 0 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90

    r3517 r3523  
    150150            i_ice_switch = 1._wp - MAX(  0._wp, SIGN( 1._wp , - ht_i_b(ji) )  ) 
    151151            fsbri_1d(ji) = fsbri_1d(ji) - i_ice_switch * rhoic * a_i_b(ji) * ht_i_b(ji)         & 
    152                &         * ( MAX(dsm_i_gd_1d(ji) + dsm_i_fl_1d(ji), sm_i_b(ji) - zsiold(ji) ) ) * r1_rdtice 
     152               &         * ( MAX( dsm_i_gd_1d(ji) + dsm_i_fl_1d(ji) , sm_i_b(ji) - zsiold(ji) ) ) * r1_rdtice 
    153153         END DO ! ji 
    154154 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r3517 r3523  
    174174         ELSE 
    175175            DO jk = 1, initad 
    176                CALL lim_adv_y( zusnit, v_ice, rzero, zsm, zs0ow (:,:), sxopw(:,:),   &             !--- ice open water area 
     176               CALL lim_adv_y( zusnit, v_ice, rone , zsm, zs0ow (:,:), sxopw(:,:),   &             !--- ice open water area 
    177177                  &                                       sxxopw(:,:), syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
    178                CALL lim_adv_x( zusnit, u_ice, rone , zsm, zs0ow (:,:), sxopw(:,:),   & 
     178               CALL lim_adv_x( zusnit, u_ice, rzero, zsm, zs0ow (:,:), sxopw(:,:),   & 
    179179                  &                                       sxxopw(:,:), syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
    180180               DO jl = 1, jpl 
    181                   CALL lim_adv_y( zusnit, v_ice, rzero, zsm, zs0ice(:,:,jl), sxice(:,:,jl),   &    !--- ice volume  --- 
     181                  CALL lim_adv_y( zusnit, v_ice, rone , zsm, zs0ice(:,:,jl), sxice(:,:,jl),   &    !--- ice volume  --- 
    182182                     &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
    183                   CALL lim_adv_x( zusnit, u_ice, rone , zsm, zs0ice(:,:,jl), sxice(:,:,jl),   & 
     183                  CALL lim_adv_x( zusnit, u_ice, rzero, zsm, zs0ice(:,:,jl), sxice(:,:,jl),   & 
    184184                     &                                       sxxice(:,:,jl), syice(:,:,jl), syyice(:,:,jl), sxyice(:,:,jl)  ) 
    185                   CALL lim_adv_y( zusnit, v_ice, rzero, zsm, zs0sn (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
     185                  CALL lim_adv_y( zusnit, v_ice, rone , zsm, zs0sn (:,:,jl), sxsn (:,:,jl),   &    !--- snow volume  --- 
    186186                     &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
    187                   CALL lim_adv_x( zusnit, u_ice, rone , zsm, zs0sn (:,:,jl), sxsn (:,:,jl),   & 
     187                  CALL lim_adv_x( zusnit, u_ice, rzero, zsm, zs0sn (:,:,jl), sxsn (:,:,jl),   & 
    188188                     &                                       sxxsn (:,:,jl), sysn (:,:,jl), syysn (:,:,jl), sxysn (:,:,jl)  ) 
    189                   CALL lim_adv_y( zusnit, v_ice, rzero, zsm, zs0sm (:,:,jl), sxsal(:,:,jl),   &    !--- ice salinity --- 
     189                  CALL lim_adv_y( zusnit, v_ice, rone , zsm, zs0sm (:,:,jl), sxsal(:,:,jl),   &    !--- ice salinity --- 
    190190                     &                                       sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl)  ) 
    191                   CALL lim_adv_x( zusnit, u_ice, rone , zsm, zs0sm (:,:,jl), sxsal(:,:,jl),   & 
     191                  CALL lim_adv_x( zusnit, u_ice, rzero, zsm, zs0sm (:,:,jl), sxsal(:,:,jl),   & 
    192192                     &                                       sxxsal(:,:,jl), sysal(:,:,jl), syysal(:,:,jl), sxysal(:,:,jl)  ) 
    193193 
    194                   CALL lim_adv_y( zusnit, v_ice, rzero, zsm, zs0oi (:,:,jl), sxage(:,:,jl),   &   !--- ice age      --- 
     194                  CALL lim_adv_y( zusnit, v_ice, rone , zsm, zs0oi (:,:,jl), sxage(:,:,jl),   &   !--- ice age      --- 
    195195                     &                                       sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl)  ) 
    196                   CALL lim_adv_x( zusnit, u_ice, rone , zsm, zs0oi (:,:,jl), sxage(:,:,jl),   & 
     196                  CALL lim_adv_x( zusnit, u_ice, rzero, zsm, zs0oi (:,:,jl), sxage(:,:,jl),   & 
    197197                     &                                       sxxage(:,:,jl), syage(:,:,jl), syyage(:,:,jl), sxyage(:,:,jl)  ) 
    198                   CALL lim_adv_y( zusnit, v_ice, rzero, zsm, zs0a  (:,:,jl), sxa  (:,:,jl),   &   !--- ice concentrations --- 
     198                  CALL lim_adv_y( zusnit, v_ice, rone , zsm, zs0a  (:,:,jl), sxa  (:,:,jl),   &   !--- ice concentrations --- 
    199199                     &                                       sxxa  (:,:,jl), sya  (:,:,jl), syya  (:,:,jl), sxya  (:,:,jl)  ) 
    200                   CALL lim_adv_x( zusnit, u_ice, rone , zsm, zs0a  (:,:,jl), sxa  (:,:,jl),   & 
     200                  CALL lim_adv_x( zusnit, u_ice, rzero, zsm, zs0a  (:,:,jl), sxa  (:,:,jl),   & 
    201201                     &                                       sxxa  (:,:,jl), sya  (:,:,jl), syya  (:,:,jl), sxya  (:,:,jl)  ) 
    202                   CALL lim_adv_y( zusnit, v_ice, rzero, zsm, zs0c0 (:,:,jl), sxc0 (:,:,jl),   &  !--- snow heat contents --- 
     202                  CALL lim_adv_y( zusnit, v_ice, rone , zsm, zs0c0 (:,:,jl), sxc0 (:,:,jl),   &  !--- snow heat contents --- 
    203203                     &                                       sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl)  ) 
    204                   CALL lim_adv_x( zusnit, u_ice, rone , zsm, zs0c0 (:,:,jl), sxc0 (:,:,jl),   & 
     204                  CALL lim_adv_x( zusnit, u_ice, rzero, zsm, zs0c0 (:,:,jl), sxc0 (:,:,jl),   & 
    205205                     &                                       sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl)  ) 
    206206                  DO layer = 1, nlay_i                                                           !--- ice heat contents --- 
    207                      CALL lim_adv_y( zusnit, v_ice, rzero, zsm, zs0e(:,:,layer,jl), sxe (:,:,layer,jl),   &  
     207                     CALL lim_adv_y( zusnit, v_ice, rone , zsm, zs0e(:,:,layer,jl), sxe (:,:,layer,jl),   &  
    208208                        &                                       sxxe(:,:,layer,jl), sye (:,:,layer,jl),   & 
    209209                        &                                       syye(:,:,layer,jl), sxye(:,:,layer,jl) ) 
    210                      CALL lim_adv_x( zusnit, u_ice, rone , zsm, zs0e(:,:,layer,jl), sxe (:,:,layer,jl),   &  
     210                     CALL lim_adv_x( zusnit, u_ice, rzero, zsm, zs0e(:,:,layer,jl), sxe (:,:,layer,jl),   &  
    211211                        &                                       sxxe(:,:,layer,jl), sye (:,:,layer,jl),   & 
    212212                        &                                       syye(:,:,layer,jl), sxye(:,:,layer,jl) ) 
  • branches/2012/dev_r3385_NOCS04_HAMF/NEMOGCM/NEMO/LIM_SRC_3/limupdate.F90

    r3517 r3523  
    272272      ENDIF 
    273273 
    274       at_i(:,:) = 0._wp 
    275       DO jl = 1, jpl 
    276          at_i(:,:) = a_i(:,:,jl) + at_i(:,:) 
     274      at_i(:,:) = a_i(:,:,1) 
     275      DO jl = 2, jpl 
     276         at_i(:,:) = at_i(:,:) + a_i(:,:,jl) 
    277277      END DO 
    278278 
     
    347347               .AND.( ( v_i(ji,jj,1)/MAX(a_i(ji,jj,1),epsi10)*zindb).GT.zhimax ) & 
    348348               .AND.( zat_i_old.LT.zacrith ) )  THEN ! new line 
    349                z_prescr_hi      = hi_max(1) / 2.0 
    350                a_i(ji,jj,1)     = v_i(ji,jj,1) / z_prescr_hi 
     349               z_prescr_hi  = hi_max(1) * 0.5_wp 
     350               a_i(ji,jj,1) = v_i(ji,jj,1) / z_prescr_hi 
    351351            ENDIF 
    352352         END DO 
     
    407407      ENDIF 
    408408 
    409       at_i(:,:) = 0._wp 
    410       DO jl = 1, jpl 
    411          at_i(:,:) = a_i(:,:,jl) + at_i(:,:) 
     409      at_i(:,:) = a_i(:,:,1) 
     410      DO jl = 2, jpl 
     411         at_i(:,:) = at_i(:,:) + a_i(:,:,jl) 
    412412      END DO 
    413413 
     
    447447      ENDIF 
    448448 
    449       at_i(:,:) = 0._wp 
    450       DO jl = 1, jpl 
    451          at_i(:,:) = a_i(:,:,jl) + at_i(:,:) 
     449      at_i(:,:) = a_i(:,:,1) 
     450      DO jl = 2, jpl 
     451         at_i(:,:) = at_i(:,:) + a_i(:,:,jl) 
    452452      END DO 
    453453 
     
    787787      !----------------------------------------------------- 
    788788      zamax = amax 
    789       ! 2.13.1) individual concentrations cannot exceed zamax 
    790       !------------------------------------------------------ 
    791  
    792       at_i(:,:) = 0.0 
    793       DO jl = 1, jpl 
    794          at_i(:,:) = a_i(:,:,jl) + at_i(:,:) 
    795       END DO 
    796  
    797       ! 2.13.2) Total ice concentration cannot exceed zamax 
    798       !---------------------------------------------------- 
     789      ! 2.13.1) total (and thus individual) concentrations cannot exceed zamax 
     790      !----------------------------------------------------------------------- 
     791 
    799792      at_i(:,:) = a_i(:,:,1) 
    800793      DO jl = 2, jpl 
    801          at_i(:,:) = a_i(:,:,jl) + at_i(:,:) 
     794         at_i(:,:) = at_i(:,:) + a_i(:,:,jl) 
    802795      END DO 
    803796 
     
    806799 
    807800            ! 0) Excessive area ? 
    808             z_da_ex =  MAX( at_i(ji,jj) - zamax , 0.0 )         
     801            z_da_ex =  MAX( at_i(ji,jj) - zamax , 0._wp )         
    809802 
    810803            ! 1) Count the number of existing categories 
     
    831824      at_i(:,:) = a_i(:,:,1) 
    832825      DO jl = 2, jpl 
    833          at_i(:,:) = a_i(:,:,jl) + at_i(:,:) 
     826         at_i(:,:) = at_i(:,:) + a_i(:,:,jl) 
    834827      END DO 
    835828 
     
    886879      at_i(:,:) = a_i(:,:,1) 
    887880      DO jl = 2, jpl 
    888          at_i(:,:) = a_i(:,:,jl) + at_i(:,:) 
     881         at_i(:,:) = at_i(:,:) + a_i(:,:,jl) 
    889882      END DO 
    890883 
     
    894887      ! Ice drift 
    895888      !------------ 
     889!!gm  BUG ? I don't understand this : it may have a wrong impact on the ice edge advection 
     890!!gm  and any way there is much faster way to code that... 
    896891      DO jj = 2, jpjm1 
    897892         DO ji = fs_2, fs_jpim1 
     
    905900      END DO 
    906901      !mask velocities 
     902!!gm BUG ?  here the mask are the one of the beginning of the time step, no?  
     903!!gm        whereas at this level they should have been updated... To be checked  
    907904      u_ice(:,:) = u_ice(:,:) * tmu(:,:) 
    908905      v_ice(:,:) = v_ice(:,:) * tmv(:,:) 
Note: See TracChangeset for help on using the changeset viewer.