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 869 for trunk/NEMO/LIM_SRC_3/limdia.F90 – NEMO

Ignore:
Timestamp:
2008-03-26T10:21:54+01:00 (16 years ago)
Author:
rblod
Message:

Parallelisation of LIM3. This commit seems to ensure the reproducibility mono/mpp. See ticket #77.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/LIM_SRC_3/limdia.F90

    r834 r869  
    163163          DO jj = njeq, jpjm1 
    164164             DO ji = fs_2, fs_jpim1   ! vector opt. 
    165                 vinfor(11) = vinfor(11) + v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 !undef def ice volume 
     165                IF( tms(ji,jj) == 1 ) THEN 
     166                   vinfor(11) = vinfor(11) + v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 !undef def ice volume 
     167                ENDIF 
    166168             END DO 
    167169          END DO 
     
    170172       vinfor(13) = 0.0 
    171173 
    172        vinfor(15) = vinfor(15) / vinfor(7) ! these have to be divided by total ice volume to have the 
    173        vinfor(29) = vinfor(29) / vinfor(7) ! right value 
     174       vinfor(15) = vinfor(15) / MAX(vinfor(7),epsi06) ! these have to be divided by total ice volume to have the 
     175       vinfor(29) = vinfor(29) / MAX(vinfor(7),epsi06) ! right value 
    174176       vinfor(31) = SQRT( vinfor(31) / MAX( vinfor(7) , epsi06 ) ) 
    175        vinfor(67) = vinfor(67) / vinfor(7) 
    176  
    177        vinfor(53) = vinfor(53) / vinfor(5) ! these have to be divided by total ice extent to have the 
    178        vinfor(55) = vinfor(55) / vinfor(5) ! right value  
    179        vinfor(57) = vinfor(57) / vinfor(5) !  
    180        vinfor(79) = vinfor(79) / vinfor(5) ! 
     177       vinfor(67) = vinfor(67) / MAX(vinfor(7),epsi06) 
     178 
     179       vinfor(53) = vinfor(53) / MAX(vinfor(5),epsi06) ! these have to be divided by total ice extent to have the 
     180       vinfor(55) = vinfor(55) / MAX(vinfor(5),epsi06) ! right value  
     181       vinfor(57) = vinfor(57) / MAX(vinfor(5),epsi06) !  
     182       vinfor(79) = vinfor(79) / MAX(vinfor(5),epsi06) ! 
    181183 
    182184       zindb      = 1.0 - MAX(0.0,SIGN(1.0,-vinfor(3))) ! 
     
    191193          DO jj = njeq, jpjm1 
    192194             DO ji = fs_2, fs_jpim1   ! vector opt. 
    193                 vinfor(33) = vinfor(33) + d_v_i_trp(ji,jj,jl)*aire(ji,jj) / 1.0e12 !ice volume 
    194                 vinfor(35) = vinfor(35) + d_v_i_thd(ji,jj,jl)*aire(ji,jj) / 1.0e12 !ice volume 
     195                IF( tms(ji,jj) == 1 ) THEN 
     196                   vinfor(33) = vinfor(33) + d_v_i_trp(ji,jj,jl)*aire(ji,jj) / 1.0e12 !ice volume 
     197                   vinfor(35) = vinfor(35) + d_v_i_thd(ji,jj,jl)*aire(ji,jj) / 1.0e12 !ice volume 
     198                ENDIF 
    195199             END DO 
    196200          END DO 
     
    199203       DO jj = njeq, jpjm1 
    200204          DO ji = fs_2, fs_jpim1   ! vector opt. 
    201              vinfor(37) = vinfor(37) + diag_sni_gr(ji,jj)*aire(ji,jj) / 1.0e12 !th growth rates 
    202              vinfor(39) = vinfor(39) + diag_lat_gr(ji,jj)*aire(ji,jj) / 1.0e12  
    203              vinfor(41) = vinfor(41) + diag_bot_gr(ji,jj)*aire(ji,jj) / 1.0e12 
    204              vinfor(43) = vinfor(43) + diag_dyn_gr(ji,jj)*aire(ji,jj) / 1.0e12  
    205              vinfor(45) = vinfor(45) + dv_dt_thd(ji,jj,5)*aire(ji,jj) / 1.0e12 
    206              vinfor(47) = vinfor(47) + v_newice(ji,jj) *aire(ji,jj) / 1.0e12 / rdt_ice ! volume acc in OW 
     205                IF( tms(ji,jj) == 1 ) THEN 
     206                   vinfor(37) = vinfor(37) + diag_sni_gr(ji,jj)*aire(ji,jj) / 1.0e12 !th growth rates 
     207                   vinfor(39) = vinfor(39) + diag_lat_gr(ji,jj)*aire(ji,jj) / 1.0e12  
     208                   vinfor(41) = vinfor(41) + diag_bot_gr(ji,jj)*aire(ji,jj) / 1.0e12 
     209                   vinfor(43) = vinfor(43) + diag_dyn_gr(ji,jj)*aire(ji,jj) / 1.0e12  
     210                   vinfor(45) = vinfor(45) + dv_dt_thd(ji,jj,5)*aire(ji,jj) / 1.0e12 
     211                   vinfor(47) = vinfor(47) + v_newice(ji,jj) *aire(ji,jj) / 1.0e12 / rdt_ice ! volume acc in OW 
     212                ENDIF 
    207213          END DO 
    208214       END DO 
     
    217223          END DO 
    218224       END DO 
    219        vinfor(63) = vinfor(63) / vinfor(3) ! these have to be divided by total ice area 
     225       vinfor(63) = vinfor(63) / MAX(vinfor(3),epsi06) ! these have to be divided by total ice area 
    220226 
    221227       !! 1.2) Diagnostics dependent on age 
     
    348354       DO jj = 2, njeqm1 
    349355          DO ji = fs_2, fs_jpim1   ! vector opt. 
    350              vinfor(38) = vinfor(38) + diag_sni_gr(ji,jj)*aire(ji,jj) / 1.0e12 !th growth rates 
    351              vinfor(40) = vinfor(40) + diag_lat_gr(ji,jj)*aire(ji,jj) / 1.0e12  
    352              vinfor(42) = vinfor(42) + diag_bot_gr(ji,jj)*aire(ji,jj) / 1.0e12 
    353              vinfor(44) = vinfor(44) + diag_dyn_gr(ji,jj)*aire(ji,jj) / 1.0e12  
    354              vinfor(46) = vinfor(46) + dv_dt_thd(ji,jj,5)*aire(ji,jj) / 1.0e12 
    355              vinfor(48) = vinfor(48) + v_newice(ji,jj) *aire(ji,jj) / 1.0e12 / rdt_ice ! volume acc in OW 
     356                IF( tms(ji,jj) == 1 ) THEN 
     357                   vinfor(38) = vinfor(38) + diag_sni_gr(ji,jj)*aire(ji,jj) / 1.0e12 !th growth rates 
     358                   vinfor(40) = vinfor(40) + diag_lat_gr(ji,jj)*aire(ji,jj) / 1.0e12  
     359                   vinfor(42) = vinfor(42) + diag_bot_gr(ji,jj)*aire(ji,jj) / 1.0e12 
     360                   vinfor(44) = vinfor(44) + diag_dyn_gr(ji,jj)*aire(ji,jj) / 1.0e12  
     361                   vinfor(46) = vinfor(46) + dv_dt_thd(ji,jj,5)*aire(ji,jj) / 1.0e12 
     362                   vinfor(48) = vinfor(48) + v_newice(ji,jj) *aire(ji,jj) / 1.0e12 / rdt_ice ! volume acc in OW 
     363                ENDIF 
    356364          END DO 
    357365       END DO 
Note: See TracChangeset for help on using the changeset viewer.