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 8373 for branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90 – NEMO

Ignore:
Timestamp:
2017-07-25T19:44:54+02:00 (7 years ago)
Author:
clem
Message:

remove most of wrk_alloc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r8370 r8373  
    8585      REAL(wp) ::   zfmdt        ! exchange mass flux x time step (J/m2), >0 towards the ocean 
    8686 
    87       REAL(wp), POINTER, DIMENSION(:) ::   zqprec      ! energy of fallen snow                       (J.m-3) 
    88       REAL(wp), POINTER, DIMENSION(:) ::   zq_su       ! heat for surface ablation                   (J.m-2) 
    89       REAL(wp), POINTER, DIMENSION(:) ::   zq_bo       ! heat for bottom ablation                    (J.m-2) 
    90       REAL(wp), POINTER, DIMENSION(:) ::   zq_rema     ! remaining heat at the end of the routine    (J.m-2) 
    91       REAL(wp), POINTER, DIMENSION(:) ::   zf_tt       ! Heat budget to determine melting or freezing(W.m-2) 
    92       REAL(wp), POINTER, DIMENSION(:) ::   zevap_rema  ! remaining mass flux from sublimation        (kg.m-2) 
    93  
    94       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_mel   ! snow melt  
    95       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_pre   ! snow precipitation  
    96       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_sub   ! snow sublimation 
    97  
    98       REAL(wp), POINTER, DIMENSION(:,:) ::   zdeltah 
    99       REAL(wp), POINTER, DIMENSION(:,:) ::   zh_i      ! ice layer thickness 
    100       INTEGER , POINTER, DIMENSION(:,:) ::   icount    ! number of layers vanished by melting  
    101  
    102       REAL(wp), POINTER, DIMENSION(:) ::   zeh_i       ! total ice heat content  (J.m-2) 
    103       REAL(wp), POINTER, DIMENSION(:) ::   zsnw        ! distribution of snow after wind blowing 
     87      REAL(wp), DIMENSION(jpij) ::   zqprec      ! energy of fallen snow                       (J.m-3) 
     88      REAL(wp), DIMENSION(jpij) ::   zq_su       ! heat for surface ablation                   (J.m-2) 
     89      REAL(wp), DIMENSION(jpij) ::   zq_bo       ! heat for bottom ablation                    (J.m-2) 
     90      REAL(wp), DIMENSION(jpij) ::   zq_rema     ! remaining heat at the end of the routine    (J.m-2) 
     91      REAL(wp), DIMENSION(jpij) ::   zf_tt       ! Heat budget to determine melting or freezing(W.m-2) 
     92      REAL(wp), DIMENSION(jpij) ::   zevap_rema  ! remaining mass flux from sublimation        (kg.m-2) 
     93 
     94      REAL(wp), DIMENSION(jpij) ::   zdh_s_mel   ! snow melt  
     95      REAL(wp), DIMENSION(jpij) ::   zdh_s_pre   ! snow precipitation  
     96      REAL(wp), DIMENSION(jpij) ::   zdh_s_sub   ! snow sublimation 
     97 
     98      REAL(wp), DIMENSION(jpij,nlay_i) ::   zdeltah 
     99      REAL(wp), DIMENSION(jpij,nlay_i) ::   zh_i      ! ice layer thickness 
     100      INTEGER , DIMENSION(jpij,nlay_i) ::   icount    ! number of layers vanished by melting  
     101 
     102      REAL(wp), DIMENSION(jpij) ::   zeh_i       ! total ice heat content  (J.m-2) 
     103      REAL(wp), DIMENSION(jpij) ::   zsnw        ! distribution of snow after wind blowing 
    104104 
    105105      REAL(wp) :: zswitch_sal 
     
    107107      ! Heat conservation  
    108108      INTEGER  ::   num_iter_max 
    109  
    110109      !!------------------------------------------------------------------ 
    111110 
    112111      ! Discriminate between varying salinity (nn_icesal=2) and prescribed cases (other values) 
    113112      SELECT CASE( nn_icesal )                  ! varying salinity or not 
    114          CASE( 1, 3 ) ;   zswitch_sal = 0       ! prescribed salinity profile 
    115          CASE( 2 )    ;   zswitch_sal = 1       ! varying salinity profile 
     113         CASE( 1, 3 ) ;   zswitch_sal = 0._wp   ! prescribed salinity profile 
     114         CASE( 2 )    ;   zswitch_sal = 1._wp   ! varying salinity profile 
    116115      END SELECT 
    117116 
    118       CALL wrk_alloc( jpij, zqprec, zq_su, zq_bo, zf_tt, zq_rema, zsnw, zevap_rema ) 
    119       CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zeh_i ) 
    120       CALL wrk_alloc( jpij, nlay_i, zdeltah, zh_i ) 
    121       CALL wrk_alloc( jpij, nlay_i, icount ) 
    122         
    123       zqprec   (:) = 0._wp ; zq_su    (:) = 0._wp ; zq_bo    (:) = 0._wp ; zf_tt(:) = 0._wp 
    124       zq_rema  (:) = 0._wp ; zsnw     (:) = 0._wp ; zevap_rema(:) = 0._wp ; 
    125       zdh_s_mel(:) = 0._wp ; zdh_s_pre(:) = 0._wp ; zdh_s_sub(:) = 0._wp ; zeh_i(:) = 0._wp 
    126  
    127       zdeltah(:,:) = 0._wp ; zh_i(:,:) = 0._wp        
    128       icount (:,:) = 0 
    129  
    130       ! Initialize enthalpy at nlay_i+1 
    131       DO ji = 1, nidx 
    132          e_i_1d(ji,nlay_i+1) = 0._wp 
     117      DO ji = 1, nidx 
     118         icount (ji,:) = 0 
     119         zdh_s_mel(ji) = 0._wp 
     120         e_i_1d(ji,nlay_i+1) = 0._wp ! Initialize enthalpy at nlay_i+1 
    133121      END DO 
    134122 
    135123      ! initialize layer thicknesses and enthalpies 
    136       h_i_old (:,0:nlay_i+1) = 0._wp 
    137       eh_i_old(:,0:nlay_i+1) = 0._wp 
     124      h_i_old (1:nidx,0:nlay_i+1) = 0._wp 
     125      eh_i_old(1:nidx,0:nlay_i+1) = 0._wp 
    138126      DO jk = 1, nlay_i 
    139127         DO ji = 1, nidx 
     
    204192      CALL lim_thd_snwblow( 1. - at_i_1d(1:nidx), zsnw(1:nidx) ) ! snow distribution over ice after wind blowing 
    205193 
    206       zdeltah(:,:) = 0._wp 
     194      zdeltah(1:nidx,:) = 0._wp 
    207195      DO ji = 1, nidx 
    208196         !----------- 
     
    239227 
    240228      ! If heat still available (zq_su > 0), then melt more snow 
    241       zdeltah(:,:) = 0._wp 
     229      zdeltah(1:nidx,:) = 0._wp 
    242230      DO jk = 1, nlay_s 
    243231         DO ji = 1, nidx 
     
    263251      ! qla_ice is always >=0 (upwards), heat goes to the atmosphere, therefore snow sublimates 
    264252      ! clem comment: not counted in mass/heat exchange in limsbc since this is an exchange with atm. (not ocean) 
    265       zdeltah(:,:) = 0._wp 
     253      zdeltah(1:nidx,:) = 0._wp 
    266254      DO ji = 1, nidx 
    267255         zdh_s_sub(ji)  = MAX( - ht_s_1d(ji) , - evap_ice_1d(ji) * r1_rhosn * rdt_ice ) 
     
    303291      ! 3.4 Surface ice ablation  
    304292      !-------------------------- 
    305       zdeltah(:,:) = 0._wp ! important 
     293      zdeltah(1:nidx,:) = 0._wp ! important 
    306294      DO jk = 1, nlay_i 
    307295         DO ji = 1, nidx 
     
    498486      ! 4.2 Basal melt 
    499487      !---------------- 
    500       zdeltah(:,:) = 0._wp ! important 
     488      zdeltah(1:nidx,:) = 0._wp ! important 
    501489      DO jk = nlay_i, 1, -1 
    502490         DO ji = 1, nidx 
     
    583571      ! If heat still available for melting and snow remains, then melt more snow 
    584572      !------------------------------------------- 
    585       zdeltah(:,:) = 0._wp ! important 
     573      zdeltah(1:nidx,:) = 0._wp ! important 
    586574      DO ji = 1, nidx 
    587575         zq_rema(ji)     = zq_su(ji) + zq_bo(ji)  
     
    668656      DO ji = 1, nidx 
    669657         IF( ht_i_1d(ji) == 0._wp )   a_i_1d(ji) = 0._wp 
    670       END DO 
    671           
    672       CALL wrk_dealloc( jpij, zqprec, zq_su, zq_bo, zf_tt, zq_rema, zsnw, zevap_rema ) 
    673       CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zeh_i ) 
    674       CALL wrk_dealloc( jpij, nlay_i, zdeltah, zh_i ) 
    675       CALL wrk_dealloc( jpij, nlay_i, icount ) 
    676       ! 
     658      END DO          
    677659      ! 
    678660   END SUBROUTINE lim_thd_dh 
Note: See TracChangeset for help on using the changeset viewer.