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 5076 for branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90 – NEMO

Ignore:
Timestamp:
2015-02-11T14:13:25+01:00 (9 years ago)
Author:
clem
Message:

LIM3: important bug fix on heat conservation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5044_CNRS_LIM3CLEAN/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r5070 r5076  
    7272      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zs0ow 
    7373      REAL(wp), POINTER, DIMENSION(:,:,:,:)  ::   zs0e 
    74       REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zviold, zvsold           ! old ice volume... 
     74      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zviold, zvsold, zsmvold  ! old ice volume... 
    7575      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zhimax                   ! old ice thickness 
    7676      REAL(wp), POINTER, DIMENSION(:,:)      ::   zatold, zeiold, zesold   ! old concentration, enthalpies 
     
    8484      CALL wrk_alloc( jpi,jpj,1,         zs0ow ) 
    8585      CALL wrk_alloc( jpi,jpj,nlay_i+1,jpl, zs0e ) 
    86       CALL wrk_alloc( jpi,jpj,jpl,       zhimax, zviold, zvsold ) 
     86      CALL wrk_alloc( jpi,jpj,jpl,       zhimax, zviold, zvsold, zsmvold ) 
    8787 
    8888      IF( numit == nstart .AND. lwp ) THEN 
     
    105105 
    106106         ! mass and salt flux init 
    107          zviold(:,:,:) = v_i(:,:,:) 
    108          zvsold(:,:,:) = v_s(:,:,:) 
    109          zeiold(:,:)   = SUM( SUM( e_i(:,:,1:nlay_i,:), dim=4 ), dim=3 )  
    110          zesold(:,:)   = SUM( SUM( e_s(:,:,1:nlay_s,:), dim=4 ), dim=3 )  
     107         zviold(:,:,:)  = v_i(:,:,:) 
     108         zvsold(:,:,:)  = v_s(:,:,:) 
     109         zsmvold(:,:,:) = smv_i(:,:,:) 
     110         zeiold(:,:)    = SUM( SUM( e_i(:,:,1:nlay_i,:), dim=4 ), dim=3 )  
     111         zesold(:,:)    = SUM( SUM( e_s(:,:,1:nlay_s,:), dim=4 ), dim=3 )  
    111112 
    112113         !--- Thickness correction init. ------------------------------- 
     
    412413               diag_trp_es(ji,jj) = ( SUM( e_s(ji,jj,1:nlay_s,:) ) - zesold(ji,jj) ) * r1_rdtice 
    413414 
    414                diag_trp_vi(ji,jj) = SUM( v_i(ji,jj,:) - zviold(ji,jj,:) ) * r1_rdtice 
    415                diag_trp_vs(ji,jj) = SUM( v_s(ji,jj,:) - zvsold(ji,jj,:) ) * r1_rdtice 
     415               diag_trp_vi (ji,jj) = SUM(   v_i(ji,jj,:) -  zviold(ji,jj,:) ) * r1_rdtice 
     416               diag_trp_vs (ji,jj) = SUM(   v_s(ji,jj,:) -  zvsold(ji,jj,:) ) * r1_rdtice 
     417               diag_trp_smv(ji,jj) = SUM( smv_i(ji,jj,:) - zsmvold(ji,jj,:) ) * r1_rdtice 
    416418            END DO 
    417419         END DO 
     
    459461      CALL wrk_dealloc( jpi,jpj,1,         zs0ow ) 
    460462      CALL wrk_dealloc( jpi,jpj,nlay_i+1,jpl, zs0e ) 
    461       CALL wrk_dealloc( jpi,jpj,jpl,       zviold, zvsold, zhimax ) 
     463      CALL wrk_dealloc( jpi,jpj,jpl,       zviold, zvsold, zhimax, zsmvold ) 
    462464      ! 
    463465      IF( nn_timing == 1 )  CALL timing_stop('limtrp') 
Note: See TracChangeset for help on using the changeset viewer.