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 3963 for branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90 – NEMO

Ignore:
Timestamp:
2013-07-09T17:41:20+02:00 (11 years ago)
Author:
clem
Message:

bugs correction + creation of glob_max and glob_min in lib_fortran.F90, see ticket:#1116

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r3938 r3963  
    8181      REAL(wp), POINTER, DIMENSION(:,:,:,:)  ::   zs0e 
    8282      REAL(wp) :: zchk_v_i, zchk_smv, zchk_fs, zchk_fw, zchk_v_i_b, zchk_smv_b, zchk_fs_b, zchk_fw_b ! Check conservation (C Rousset) 
     83      REAL(wp) :: zchk_vmin, zchk_amin, zchk_amax ! Check errors (C Rousset) 
    8384      ! mass and salt flux (clem) 
    8485      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zviold   ! old ice volume... 
     
    170171         zusnit = 1.0 / REAL( initad )  
    171172         IF( zcfl > 0.5 .AND. lwp )   & 
    172             WRITE(numout,*) 'lim_trp_2 : CFL violation at day ', nday, ', cfl = ', zcfl,   & 
     173            WRITE(numout,*) 'lim_trp  : CFL violation at day ', nday, ', cfl = ', zcfl,   & 
    173174               &                        ': the ice time stepping is split in two' 
    174175 
     
    430431               DO ji = 1, jpi 
    431432 
    432                   IF ( v_i(ji,jj,jl) > 0. ) THEN 
     433                  IF ( v_i(ji,jj,jl) > 0._wp ) THEN 
    433434                     zvi = v_i(ji,jj,jl) 
    434435                     zvs = v_s(ji,jj,jl) 
     
    437438                      
    438439                     IF ( ( zdv > 0.0 .AND. ht_i(ji,jj,jl) > zhimax(ji,jj,jl) .AND. SUM( zaiold(ji,jj,1:jpl) ) < 0.80 ) .OR. & 
    439                           ( zdv < 0.0 .AND. ht_i(ji,jj,jl) > zhimax(ji,jj,jl) ) ) THEN                                           
     440                        & ( zdv < 0.0 .AND. ht_i(ji,jj,jl) > zhimax(ji,jj,jl) ) ) THEN                                           
    440441                        ht_i(ji,jj,jl) = MIN( zhimax(ji,jj,jl), hi_max(jl) ) 
    441442                        zindh   =  MAX( rzero, SIGN( rone, ht_i(ji,jj,jl) - epsi10 ) ) 
     
    447448                     ENDIF 
    448449 
    449                      !zindh   =  MAX( rzero, SIGN( rone, ht_i(ji,jj,jl) - epsi10 ) ) 
    450                      v_i(ji,jj,jl) = a_i(ji,jj,jl) * ht_i(ji,jj,jl) 
    451                      v_s(ji,jj,jl) = a_i(ji,jj,jl) * ht_s(ji,jj,jl) 
    452  
    453                      ! Update mass fluxes (clem) 
     450                     ! small correction due to *zindh for a_i 
     451                     v_i(ji,jj,jl) = zindh * v_i(ji,jj,jl) 
     452                     v_s(ji,jj,jl) = zindh * v_s(ji,jj,jl) 
     453 
     454                     ! Update mass fluxes 
    454455                     rdmicif(ji,jj) = rdmicif(ji,jj) + ( v_i(ji,jj,jl) - zvi ) * rhoic 
    455456                     rdmsnif(ji,jj) = rdmsnif(ji,jj) + ( v_s(ji,jj,jl) - zvs ) * rhosn 
     
    587588         zchk_smv = ( glob_sum( SUM( smv_i(:,:,:), dim=3 ) * area(:,:) * tms(:,:) ) - zchk_smv_b ) / rdt_ice + ( zchk_fs / rhoic ) 
    588589 
     590         zchk_vmin = glob_min(v_i) 
     591         zchk_amax = glob_max(SUM(a_i,dim=3)) 
     592         zchk_amin = glob_min(a_i) 
     593 
    589594         IF(lwp) THEN 
    590             IF (    ABS( zchk_v_i   ) >  1.e-5 ) WRITE(numout,*) 'violation volume [m3/day]     (limtrp) = ',(zchk_v_i * 86400.) 
    591             IF (    ABS( zchk_smv   ) >  1.e-4 ) WRITE(numout,*) 'violation saline [psu*m3/day] (limtrp) = ',(zchk_smv * 86400.) 
    592             IF ( MINVAL( v_i(:,:,:) ) <  0.    ) WRITE(numout,*) 'violation v_i<0  [mm]         (limtrp) = ',(MINVAL(v_i) * 1.e-3) 
    593             IF ( MINVAL( a_i(:,:,:) ) <  0.    ) WRITE(numout,*) 'violation a_i<0               (limtrp) = ',MINVAL(a_i) 
     595            IF ( ABS( zchk_v_i   ) >  1.e-5 ) WRITE(numout,*) 'violation volume [m3/day]     (limtrp) = ',(zchk_v_i * 86400.) 
     596            IF ( ABS( zchk_smv   ) >  1.e-4 ) WRITE(numout,*) 'violation saline [psu*m3/day] (limtrp) = ',(zchk_smv * 86400.) 
     597            IF ( zchk_vmin <  0.            ) WRITE(numout,*) 'violation v_i<0  [mm]         (limtrp) = ',(zchk_vmin * 1.e-3) 
     598            IF ( zchk_amin <  0.            ) WRITE(numout,*) 'violation a_i<0               (limtrp) = ',zchk_amin 
    594599         ENDIF 
    595600      ENDIF 
Note: See TracChangeset for help on using the changeset viewer.