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 3294 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90 – NEMO

Ignore:
Timestamp:
2012-01-28T17:44:18+01:00 (12 years ago)
Author:
rblod
Message:

Merge of 3.4beta into the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90

    r2777 r3294  
    2727   USE limvar           ! LIM variables 
    2828   USE in_out_manager   ! I/O manager 
    29    USE wrk_nemo         ! workspace manager 
    3029   USE lib_mpp          ! MPP library 
     30   USE wrk_nemo         ! work arrays 
    3131 
    3232   IMPLICIT NONE 
    3333   PRIVATE 
    3434 
    35    PUBLIC   lim_thd_ent     ! called by lim_thd 
     35   PUBLIC   lim_thd_ent         ! called by lim_thd 
    3636 
    3737   REAL(wp) ::   epsi20 = 1e-20_wp   ! constant values 
     
    4848   !!---------------------------------------------------------------------- 
    4949CONTAINS 
    50  
     50  
    5151   SUBROUTINE lim_thd_ent( kideb, kiut, jl ) 
    5252      !!------------------------------------------------------------------- 
     
    9797         zdiscrim              !: dummy factor 
    9898 
    99       INTEGER, DIMENSION(jpij) :: & 
    100          snswi          ,   &  !  snow switch 
    101          nbot0          ,   &  !  old layer bottom index 
    102          icsuind        ,   &  !  ice surface index 
    103          icsuswi        ,   &  !  ice surface switch 
    104          icboind        ,   &  !  ice bottom index 
    105          icboswi        ,   &  !  ice bottom switch 
    106          snicind        ,   &  !  snow ice index 
    107          snicswi        ,   &  !  snow ice switch 
    108          snind                 !  snow index 
    109       ! 
    110       REAL(wp), DIMENSION(jpij,0:jkmax+3) ::   zm0       !  old layer-system vertical cotes 
    111       REAL(wp), DIMENSION(jpij,0:jkmax+3) ::   qm0       !  old layer-system heat content 
    112       REAL(wp), DIMENSION(jpij,0:jkmax+3) ::   z_s       !  new snow system vertical cotes 
    113       REAL(wp), DIMENSION(jpij,0:jkmax+3) ::   z_i       !  new ice system vertical cotes 
    114       REAL(wp), DIMENSION(jpij,0:jkmax+3) ::   zthick0   !  old ice thickness 
    115       REAL(wp), DIMENSION(jpij,0:jkmax+3) ::   zhl0      ! old and new layer thicknesses 
    116       ! 
    117       REAL(wp), DIMENSION(0:jkmax+3,0:jkmax+3) ::   zrl01 
    118       ! 
    119       REAL(wp), POINTER, DIMENSION(:) ::   zh_i, zqsnow , zqti_in, zqti_fin 
    120       REAL(wp), POINTER, DIMENSION(:) ::   zh_s, zdeltah, zqts_in, zqts_fin 
     99      INTEGER, POINTER, DIMENSION(:) ::   snswi     !  snow switch 
     100      INTEGER, POINTER, DIMENSION(:) ::   nbot0     !  old layer bottom index 
     101      INTEGER, POINTER, DIMENSION(:) ::   icsuind   !  ice surface index 
     102      INTEGER, POINTER, DIMENSION(:) ::   icsuswi   !  ice surface switch 
     103      INTEGER, POINTER, DIMENSION(:) ::   icboind   !  ice bottom index 
     104      INTEGER, POINTER, DIMENSION(:) ::   icboswi   !  ice bottom switch 
     105      INTEGER, POINTER, DIMENSION(:) ::   snicind   !  snow ice index 
     106      INTEGER, POINTER, DIMENSION(:) ::   snicswi   !  snow ice switch 
     107      INTEGER, POINTER, DIMENSION(:) ::   snind     !  snow index 
     108      ! 
     109      REAL(wp), POINTER, DIMENSION(:) ::   zh_i   ! thickness of an ice layer 
     110      REAL(wp), POINTER, DIMENSION(:) ::   zh_s          ! thickness of a snow layer 
     111      REAL(wp), POINTER, DIMENSION(:) ::   zqsnow        ! enthalpy of the snow put in snow ice     
     112      REAL(wp), POINTER, DIMENSION(:) ::   zdeltah       ! temporary variable 
     113      REAL(wp), POINTER, DIMENSION(:) ::   zqti_in, zqts_in 
     114      REAL(wp), POINTER, DIMENSION(:) ::   zqti_fin, zqts_fin 
     115 
     116      REAL(wp), POINTER, DIMENSION(:,:) ::   zm0       !  old layer-system vertical cotes  
     117      REAL(wp), POINTER, DIMENSION(:,:) ::   qm0       !  old layer-system heat content  
     118      REAL(wp), POINTER, DIMENSION(:,:) ::   z_s       !  new snow system vertical cotes  
     119      REAL(wp), POINTER, DIMENSION(:,:) ::   z_i       !  new ice system vertical cotes  
     120      REAL(wp), POINTER, DIMENSION(:,:) ::   zthick0   !  old ice thickness  
     121      REAL(wp), POINTER, DIMENSION(:,:) ::   zhl0      ! old and new layer thicknesses  
     122      REAL(wp), POINTER, DIMENSION(:,:) ::   zrl01 
    121123      !!------------------------------------------------------------------- 
    122124 
    123       IF( wrk_in_use(1, 1,2,3,4,5,6,7,8) ) THEN 
    124          CALL ctl_stop('lim_thd_ent : requestead workspace arrays unavailable')   ;   RETURN 
    125       END IF 
    126  
    127       ! Set-up pointers to sub-arrays of workspace arrays 
    128       zh_i      =>  wrk_1d_1 (1:jpij)   ! thickness of an ice layer 
    129       zh_s      =>  wrk_1d_2 (1:jpij)   ! thickness of a snow layer 
    130       zqsnow    =>  wrk_1d_3 (1:jpij)   ! enthalpy of the snow put in snow ice 
    131       zdeltah   =>  wrk_1d_4 (1:jpij)   ! temporary variable 
    132       zqti_in   =>  wrk_1d_5 (1:jpij)   ! Energy conservation 
    133       zqts_in   =>  wrk_1d_6 (1:jpij)   !    -         - 
    134       zqti_fin  =>  wrk_1d_7 (1:jpij)   !    -         - 
    135       zqts_fin  =>  wrk_1d_8 (1:jpij)   !    -         - 
     125      CALL wrk_alloc( jpij, snswi, nbot0, icsuind, icsuswi, icboind, icboswi, snicind, snicswi, snind )   ! integer 
     126      CALL wrk_alloc( jpij, zh_i, zh_s, zqsnow, zdeltah, zqti_in, zqts_in, zqti_fin, zqts_fin )           ! real 
     127      CALL wrk_alloc( jpij,jkmax+4, zm0, qm0, z_s, z_i, zthick0, zhl0, kjstart = 0 ) 
     128      CALL wrk_alloc( jkmax+4,jkmax+4, zrl01, kistart = 0, kjstart = 0 ) 
    136129 
    137130      zthick0(:,:) = 0._wp 
     
    687680      END DO !jk 
    688681      ! 
    689       IF( wrk_not_released(1, 1,2,3,4,5,6,7,8) )   CALL ctl_stop( 'lim_thd_ent : failed to release workspace arrays' ) 
     682      CALL wrk_dealloc( jpij, snswi, nbot0, icsuind, icsuswi, icboind, icboswi, snicind, snicswi, snind )   ! integer 
     683      CALL wrk_dealloc( jpij, zh_i, zh_s, zqsnow, zdeltah, zqti_in, zqts_in, zqti_fin, zqts_fin )           ! real 
     684      CALL wrk_dealloc( jpij,jkmax+4, zm0, qm0, z_s, z_i, zthick0, zhl0, kjstart = 0 ) 
     685      CALL wrk_dealloc( jkmax+4,jkmax+4, zrl01, kistart = 0, kjstart = 0 ) 
    690686      ! 
    691687   END SUBROUTINE lim_thd_ent 
Note: See TracChangeset for help on using the changeset viewer.