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 7910 for branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3 – NEMO

Ignore:
Timestamp:
2017-04-13T16:21:08+02:00 (7 years ago)
Author:
timgraham
Message:

All wrk_alloc removed

Location:
branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3
Files:
18 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limadv_prather.F90

    r7646 r7910  
    2121   USE prtctl           ! Print control 
    2222   USE lib_mpp          ! MPP library 
    23    USE wrk_nemo         ! work arrays 
    2423   USE lib_fortran      ! to use key_nosignedzero 
    2524 
     
    6564      REAL(wp) ::   zs1new, zalf , zalfq , zbt           !   -      - 
    6665      REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !   -      - 
    67       REAL(wp), POINTER, DIMENSION(:,:) ::   zf0 , zfx  , zfy   , zbet   ! 2D workspace 
    68       REAL(wp), POINTER, DIMENSION(:,:) ::   zfm , zfxx , zfyy  , zfxy   !  -      - 
    69       REAL(wp), POINTER, DIMENSION(:,:) ::   zalg, zalg1, zalg1q         !  -      - 
     66      REAL(wp), DIMENSION(jpi,jpj) ::   zf0 , zfx  , zfy   , zbet   ! 2D workspace 
     67      REAL(wp), DIMENSION(jpi,jpj) ::   zfm , zfxx , zfyy  , zfxy   !  -      - 
     68      REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q         !  -      - 
    7069      !--------------------------------------------------------------------- 
    7170 
    72       CALL wrk_alloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm ) 
    73       CALL wrk_alloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q ) 
    7471 
    7572      ! Limitation of moments.                                            
     
    218215      ENDIF 
    219216      ! 
    220       CALL wrk_dealloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm ) 
    221       CALL wrk_dealloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q ) 
    222217      ! 
    223218   END SUBROUTINE lim_adv_x 
     
    250245      REAL(wp) ::   zs1new, zalf , zalfq , zbt           !    -         - 
    251246      REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !    -         - 
    252       REAL(wp), POINTER, DIMENSION(:,:) ::   zf0, zfx , zfy , zbet   ! 2D workspace 
    253       REAL(wp), POINTER, DIMENSION(:,:) ::   zfm, zfxx, zfyy, zfxy   !  -      - 
    254       REAL(wp), POINTER, DIMENSION(:,:) ::   zalg, zalg1, zalg1q     !  -      - 
     247      REAL(wp), DIMENSION(jpi,jpj) ::   zf0, zfx , zfy , zbet   ! 2D workspace 
     248      REAL(wp), DIMENSION(jpi,jpj) ::   zfm, zfxx, zfyy, zfxy   !  -      - 
     249      REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q     !  -      - 
    255250      !--------------------------------------------------------------------- 
    256251 
    257       CALL wrk_alloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm ) 
    258       CALL wrk_alloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q ) 
    259252 
    260253      ! Limitation of moments. 
     
    404397      ENDIF 
    405398      ! 
    406       CALL wrk_dealloc( jpi, jpj, zf0 , zfx , zfy , zbet, zfm ) 
    407       CALL wrk_dealloc( jpi, jpj, zfxx, zfyy, zfxy, zalg, zalg1, zalg1q ) 
    408399      ! 
    409400   END SUBROUTINE lim_adv_y 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limadv_umx.F90

    r7753 r7910  
    2121   USE lbclnk         ! lateral boundary conditions -- MPP exchanges 
    2222   USE lib_mpp        ! MPP library 
    23    USE wrk_nemo       ! work arrays 
    2423   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2524   USE timing         ! Timing 
     
    6564      REAL(wp) ::   zfp_ui, zfp_vj   !   -      - 
    6665      REAL(wp) ::   zfm_ui, zfm_vj   !   -      - 
    67       REAL(wp), POINTER, DIMENSION(:,:) :: zt_ups, zfu_ups, zfv_ups, ztrd, zfu_ho, zfv_ho, zt_u, zt_v 
     66      REAL(wp), DIMENSION(jpi,jpj) :: zt_ups, zfu_ups, zfv_ups, ztrd, zfu_ho, zfv_ho, zt_u, zt_v 
    6867      !!---------------------------------------------------------------------- 
    6968      ! 
    7069      IF( nn_timing == 1 )  CALL timing_start('lim_adv_umx') 
    7170      ! 
    72       CALL wrk_alloc( jpi,jpj,   zt_ups, zfu_ups, zfv_ups, ztrd, zfu_ho, zfv_ho, zt_u, zt_v ) 
    7371      ! 
    7472      ! 
     
    146144      ! 
    147145      ! 
    148       CALL wrk_dealloc( jpi,jpj,   zt_ups, zfu_ups, zfv_ups, ztrd, zfu_ho, zfv_ho, zt_u, zt_v ) 
    149146      ! 
    150147      IF( nn_timing == 1 )  CALL timing_stop('lim_adv_umx') 
     
    174171      INTEGER  ::   ji, jj    ! dummy loop indices 
    175172      REAL(wp) ::   zc_box    !   -      - 
    176       REAL(wp), POINTER, DIMENSION(:,:) :: zzt 
     173      REAL(wp), DIMENSION(jpi,jpj) :: zzt 
    177174      !!---------------------------------------------------------------------- 
    178175      ! 
    179176      IF( nn_timing == 1 )  CALL timing_start('macho') 
    180177      ! 
    181       CALL wrk_alloc( jpi,jpj,   zzt ) 
    182178      ! 
    183179      IF( MOD( (kt - 1) / nn_fsbc , 2 ) == 0 ) THEN         !==  odd ice time step:  adv_x then adv_y  ==! 
     
    219215      ENDIF       
    220216      ! 
    221       CALL wrk_dealloc( jpi,jpj,   zzt ) 
    222217      ! 
    223218      IF( nn_timing == 1 )  CALL timing_stop('macho') 
     
    245240      INTEGER  ::   ji, jj       ! dummy loop indices 
    246241      REAL(wp) ::   zcu, zdx2, zdx4    !   -      - 
    247       REAL(wp), POINTER, DIMENSION(:,:) :: ztu1, ztu2, ztu3, ztu4 
     242      REAL(wp), DIMENSION(jpi,jpj) :: ztu1, ztu2, ztu3, ztu4 
    248243      !!---------------------------------------------------------------------- 
    249244      ! 
    250245      IF( nn_timing == 1 )  CALL timing_start('ultimate_x') 
    251246      ! 
    252       CALL wrk_alloc( jpi,jpj,   ztu1, ztu2, ztu3, ztu4 ) 
    253247      ! 
    254248      !                                                     !--  Laplacian in i-direction  --! 
     
    346340      END SELECT 
    347341      ! 
    348       CALL wrk_dealloc( jpi,jpj,   ztu1, ztu2, ztu3, ztu4 ) 
    349342      ! 
    350343      IF( nn_timing == 1 )  CALL timing_stop('ultimate_x') 
     
    372365      INTEGER  ::   ji, jj       ! dummy loop indices 
    373366      REAL(wp) ::   zcv, zdy2, zdy4    !   -      - 
    374       REAL(wp), POINTER, DIMENSION(:,:) :: ztv1, ztv2, ztv3, ztv4 
     367      REAL(wp), DIMENSION(jpi,jpj) :: ztv1, ztv2, ztv3, ztv4 
    375368      !!---------------------------------------------------------------------- 
    376369      ! 
    377370      IF( nn_timing == 1 )  CALL timing_start('ultimate_y') 
    378371      ! 
    379       CALL wrk_alloc( jpi,jpj,   ztv1, ztv2, ztv3, ztv4 ) 
    380372      ! 
    381373      !                                                     !--  Laplacian in j-direction  --! 
     
    474466      END SELECT 
    475467      ! 
    476       CALL wrk_dealloc( jpi,jpj,   ztv1, ztv2, ztv3, ztv4 ) 
    477468      ! 
    478469      IF( nn_timing == 1 )  CALL timing_stop('ultimate_y') 
     
    502493      REAL(wp) ::   zpos, zneg, zbt, za, zb, zc, zbig, zsml, z1_dt   ! local scalars 
    503494      REAL(wp) ::   zau, zbu, zcu, zav, zbv, zcv, zup, zdo            !   -      - 
    504       REAL(wp), POINTER, DIMENSION(:,:) :: zbetup, zbetdo, zbup, zbdo, zmsk, zdiv 
     495      REAL(wp), DIMENSION(jpi,jpj) :: zbetup, zbetdo, zbup, zbdo, zmsk, zdiv 
    505496      !!---------------------------------------------------------------------- 
    506497      ! 
    507498      IF( nn_timing == 1 )  CALL timing_start('nonosc_2d') 
    508499      ! 
    509       CALL wrk_alloc( jpi,jpj,   zbetup, zbetdo, zbup, zbdo, zmsk, zdiv ) 
    510500      ! 
    511501      zbig = 1.e+40_wp 
     
    578568      CALL lbc_lnk_multi( paa, 'U', -1., pbb, 'V', -1. )   ! lateral boundary condition (changed sign) 
    579569      ! 
    580       CALL wrk_dealloc( jpi,jpj,   zbetup, zbetdo, zbup, zbdo, zmsk, zdiv ) 
    581570      ! 
    582571      IF( nn_timing == 1 )  CALL timing_stop('nonosc_2d') 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90

    r7753 r7910  
    2020   USE lbclnk         ! lateral boundary condition - MPP exchanges 
    2121   USE lib_mpp        ! MPP library 
    22    USE wrk_nemo       ! work arrays 
    2322   USE prtctl         ! Print control 
    2423   USE in_out_manager ! I/O manager 
     
    6665      INTEGER , PARAMETER                 ::  num_convfrq  = 5          ! convergence check frequency of the Crant-Nicholson scheme (perf. optimization) 
    6766      REAL(wp), POINTER, DIMENSION(:)     ::  zconv 
    68       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zrlx, zdiv0, ztab0 
    69       REAL(wp), POINTER, DIMENSION(:,:)   ::  zflu, zflv, zdiv 
     67      REAL(wp), DIMENSION(jpi,jpj,isize) ::  zrlx, zdiv0, ztab0 
     68      REAL(wp), DIMENSION(jpi,jpj)   ::  zflu, zflv, zdiv 
    7069      !!------------------------------------------------------------------- 
    7170      TYPE(arrayptr)   , ALLOCATABLE, DIMENSION(:) ::   pt2d_array, zrlx_array 
     
    8382      ALLOCATE( psgn_array(isize) ) 
    8483 
    85       CALL wrk_alloc( jpi,jpj,       zflu, zflv, zdiv ) 
    86       CALL wrk_alloc( jpi,jpj,isize, zrlx, zdiv0, ztab0 ) 
    8784       
    8885      DO jk= 1, isize 
     
    206203      ENDIF 
    207204      ! 
    208       CALL wrk_dealloc( jpi,jpj,       zflu, zflv, zdiv ) 
    209       CALL wrk_dealloc( jpi,jpj,isize, zrlx, zdiv0, ztab0 ) 
    210205      ! 
    211206      DEALLOCATE( zconv ) 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r7761 r7910  
    2828   USE lib_mpp          ! MPP library 
    2929   USE lib_fortran      ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    30    USE wrk_nemo         ! work arrays 
    3130   USE fldread          ! read input fields 
    3231   USE iom 
     
    8281      INTEGER  :: i_hemis, i_fill, jl0   
    8382      REAL(wp)   :: zarg, zV, zconv, zdv  
    84       REAL(wp), POINTER, DIMENSION(:,:)   :: zswitch    ! ice indicator 
    85       REAL(wp), POINTER, DIMENSION(:,:)   :: zht_i_ini, zat_i_ini, zvt_i_ini            !data from namelist or nc file 
    86       REAL(wp), POINTER, DIMENSION(:,:)   :: zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini !data from namelist or nc file 
    87       REAL(wp), POINTER, DIMENSION(:,:,:) :: zh_i_ini, za_i_ini                         !data by cattegories to fill 
    88       INTEGER , POINTER, DIMENSION(:)     :: itest 
    89       !-------------------------------------------------------------------- 
    90  
    91       CALL wrk_alloc( jpi, jpj, jpl, zh_i_ini,  za_i_ini ) 
    92       CALL wrk_alloc( jpi, jpj,      zht_i_ini, zat_i_ini, zvt_i_ini, zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 
    93       CALL wrk_alloc( jpi, jpj,      zswitch ) 
    94       Call wrk_alloc( 4,             itest ) 
     83      REAL(wp), DIMENSION(jpi,jpj)   :: zswitch    ! ice indicator 
     84      REAL(wp), DIMENSION(jpi,jpj)   :: zht_i_ini, zat_i_ini, zvt_i_ini            !data from namelist or nc file 
     85      REAL(wp), DIMENSION(jpi,jpj)   :: zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini !data from namelist or nc file 
     86      REAL(wp), DIMENSION(jpi,jpj,jpl) :: zh_i_ini, za_i_ini                         !data by cattegories to fill 
     87      INTEGER , DIMENSION(4)     :: itest 
     88      !-------------------------------------------------------------------- 
    9589 
    9690      IF(lwp) WRITE(numout,*) 
     
    464458!!!       
    465459 
    466       CALL wrk_dealloc( jpi, jpj, jpl, zh_i_ini,  za_i_ini ) 
    467       CALL wrk_dealloc( jpi, jpj,      zht_i_ini, zat_i_ini, zvt_i_ini, zts_u_ini, zht_s_ini, zsm_i_ini, ztm_i_ini ) 
    468       CALL wrk_dealloc( jpi, jpj,      zswitch ) 
    469460      Call wrk_dealloc( 4,             itest ) 
    470461 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90

    r7753 r7910  
    2121   USE lbclnk           ! lateral boundary condition - MPP exchanges 
    2222   USE lib_mpp          ! MPP library 
    23    USE wrk_nemo         ! work arrays 
    2423 
    2524   USE in_out_manager   ! I/O manager 
     
    110109      REAL(wp) ::   za, zfac              ! local scalar 
    111110      CHARACTER (len = 15) ::   fieldid 
    112       REAL(wp), POINTER, DIMENSION(:,:)   ::   closing_net     ! net rate at which area is removed    (1/s) 
     111      REAL(wp), DIMENSION(jpi,jpj)   ::   closing_net     ! net rate at which area is removed    (1/s) 
    113112                                                               ! (ridging ice area - area of new ridges) / dt 
    114       REAL(wp), POINTER, DIMENSION(:,:)   ::   divu_adv        ! divu as implied by transport scheme  (1/s) 
    115       REAL(wp), POINTER, DIMENSION(:,:)   ::   opning          ! rate of opening due to divergence/shear 
    116       REAL(wp), POINTER, DIMENSION(:,:)   ::   closing_gross   ! rate at which area removed, not counting area of new ridges 
     113      REAL(wp), DIMENSION(jpi,jpj)   ::   divu_adv        ! divu as implied by transport scheme  (1/s) 
     114      REAL(wp), DIMENSION(jpi,jpj)   ::   opning          ! rate of opening due to divergence/shear 
     115      REAL(wp), DIMENSION(jpi,jpj)   ::   closing_gross   ! rate at which area removed, not counting area of new ridges 
    117116      ! 
    118117      INTEGER, PARAMETER ::   nitermax = 20     
     
    122121      IF( nn_timing == 1 )  CALL timing_start('limitd_me') 
    123122 
    124       CALL wrk_alloc( jpi,jpj, closing_net, divu_adv, opning, closing_gross ) 
    125123 
    126124      ! conservation test 
     
    289287      IF( ln_ctl )       CALL lim_prt3D( 'limitd_me' ) 
    290288 
    291       CALL wrk_dealloc( jpi, jpj, closing_net, divu_adv, opning, closing_gross ) 
    292289      ! 
    293290      IF( nn_timing == 1 )  CALL timing_stop('limitd_me') 
     
    305302      INTEGER ::   ji,jj, jl    ! dummy loop indices 
    306303      REAL(wp) ::   Gstari, astari, hrmean, zdummy   ! local scalar 
    307       REAL(wp), POINTER, DIMENSION(:,:,:) ::   Gsum      ! Gsum(n) = sum of areas in categories 0 to n 
    308       !------------------------------------------------------------------------------! 
    309  
    310       CALL wrk_alloc( jpi,jpj,jpl+2, Gsum, kkstart = -1 ) 
     304      REAL(wp), DIMENSION(jpi,jpj,-1:jpl) ::   Gsum      ! Gsum(n) = sum of areas in categories 0 to n 
     305      !------------------------------------------------------------------------------! 
     306 
    311307 
    312308      Gstari     = 1.0/rn_gstar     
     
    477473      END DO 
    478474      ! 
    479       CALL wrk_dealloc( jpi,jpj,jpl+2, Gsum, kkstart = -1 ) 
    480475      ! 
    481476   END SUBROUTINE lim_itd_me_ridgeprep 
     
    501496      REAL(wp) ::   hL, hR, farea    ! left and right limits of integration 
    502497 
    503       INTEGER , POINTER, DIMENSION(:) ::   indxi, indxj   ! compressed indices 
    504       REAL(wp), POINTER, DIMENSION(:) ::   zswitch, fvol   ! new ridge volume going to n2 
    505  
    506       REAL(wp), POINTER, DIMENSION(:) ::   afrac            ! fraction of category area ridged  
    507       REAL(wp), POINTER, DIMENSION(:) ::   ardg1 , ardg2    ! area of ice ridged & new ridges 
    508       REAL(wp), POINTER, DIMENSION(:) ::   vsrdg , esrdg    ! snow volume & energy of ridging ice 
    509       REAL(wp), POINTER, DIMENSION(:) ::   dhr   , dhr2     ! hrmax - hrmin  &  hrmax^2 - hrmin^2 
    510  
    511       REAL(wp), POINTER, DIMENSION(:) ::   vrdg1   ! volume of ice ridged 
    512       REAL(wp), POINTER, DIMENSION(:) ::   vrdg2   ! volume of new ridges 
    513       REAL(wp), POINTER, DIMENSION(:) ::   vsw     ! volume of seawater trapped into ridges 
    514       REAL(wp), POINTER, DIMENSION(:) ::   srdg1   ! sal*volume of ice ridged 
    515       REAL(wp), POINTER, DIMENSION(:) ::   srdg2   ! sal*volume of new ridges 
    516       REAL(wp), POINTER, DIMENSION(:) ::   smsw    ! sal*volume of water trapped into ridges 
    517       REAL(wp), POINTER, DIMENSION(:) ::   oirdg1, oirdg2   ! ice age of ice ridged 
    518  
    519       REAL(wp), POINTER, DIMENSION(:) ::   afrft            ! fraction of category area rafted 
    520       REAL(wp), POINTER, DIMENSION(:) ::   arft1 , arft2    ! area of ice rafted and new rafted zone 
    521       REAL(wp), POINTER, DIMENSION(:) ::   virft , vsrft    ! ice & snow volume of rafting ice 
    522       REAL(wp), POINTER, DIMENSION(:) ::   esrft , smrft    ! snow energy & salinity of rafting ice 
    523       REAL(wp), POINTER, DIMENSION(:) ::   oirft1, oirft2   ! ice age of ice rafted 
    524  
    525       REAL(wp), POINTER, DIMENSION(:,:) ::   eirft      ! ice energy of rafting ice 
    526       REAL(wp), POINTER, DIMENSION(:,:) ::   erdg1      ! enth*volume of ice ridged 
    527       REAL(wp), POINTER, DIMENSION(:,:) ::   erdg2      ! enth*volume of new ridges 
    528       REAL(wp), POINTER, DIMENSION(:,:) ::   ersw       ! enth of water trapped into ridges 
     498      INTEGER , DIMENSION(jpij) ::   indxi, indxj   ! compressed indices 
     499      REAL(wp), DIMENSION(jpij) ::   zswitch, fvol   ! new ridge volume going to n2 
     500 
     501      REAL(wp), DIMENSION(jpij) ::   afrac            ! fraction of category area ridged  
     502      REAL(wp), DIMENSION(jpij) ::   ardg1 , ardg2    ! area of ice ridged & new ridges 
     503      REAL(wp), DIMENSION(jpij) ::   vsrdg , esrdg    ! snow volume & energy of ridging ice 
     504      REAL(wp), DIMENSION(jpij) ::   dhr   , dhr2     ! hrmax - hrmin  &  hrmax^2 - hrmin^2 
     505 
     506      REAL(wp), DIMENSION(jpij) ::   vrdg1   ! volume of ice ridged 
     507      REAL(wp), DIMENSION(jpij) ::   vrdg2   ! volume of new ridges 
     508      REAL(wp), DIMENSION(jpij) ::   vsw     ! volume of seawater trapped into ridges 
     509      REAL(wp), DIMENSION(jpij) ::   srdg1   ! sal*volume of ice ridged 
     510      REAL(wp), DIMENSION(jpij) ::   srdg2   ! sal*volume of new ridges 
     511      REAL(wp), DIMENSION(jpij) ::   smsw    ! sal*volume of water trapped into ridges 
     512      REAL(wp), DIMENSION(jpij) ::   oirdg1, oirdg2   ! ice age of ice ridged 
     513 
     514      REAL(wp), DIMENSION(jpij) ::   afrft            ! fraction of category area rafted 
     515      REAL(wp), DIMENSION(jpij) ::   arft1 , arft2    ! area of ice rafted and new rafted zone 
     516      REAL(wp), DIMENSION(jpij) ::   virft , vsrft    ! ice & snow volume of rafting ice 
     517      REAL(wp), DIMENSION(jpij) ::   esrft , smrft    ! snow energy & salinity of rafting ice 
     518      REAL(wp), DIMENSION(jpij) ::   oirft1, oirft2   ! ice age of ice rafted 
     519 
     520      REAL(wp), DIMENSION(jpij,nlay_i) ::   eirft      ! ice energy of rafting ice 
     521      REAL(wp), DIMENSION(jpij,nlay_i) ::   erdg1      ! enth*volume of ice ridged 
     522      REAL(wp), DIMENSION(jpij,nlay_i) ::   erdg2      ! enth*volume of new ridges 
     523      REAL(wp), DIMENSION(jpij,nlay_i) ::   ersw       ! enth of water trapped into ridges 
    529524      !!---------------------------------------------------------------------- 
    530525 
    531       CALL wrk_alloc( jpij,        indxi, indxj ) 
    532       CALL wrk_alloc( jpij,        zswitch, fvol ) 
    533       CALL wrk_alloc( jpij,        afrac, ardg1, ardg2, vsrdg, esrdg, dhr, dhr2 ) 
    534       CALL wrk_alloc( jpij,        vrdg1, vrdg2, vsw  , srdg1, srdg2, smsw, oirdg1, oirdg2 ) 
    535       CALL wrk_alloc( jpij,        afrft, arft1, arft2, virft, vsrft, esrft, smrft, oirft1, oirft2 ) 
    536       CALL wrk_alloc( jpij,nlay_i, eirft, erdg1, erdg2, ersw ) 
    537526 
    538527      !------------------------------------------------------------------------------- 
     
    732721 
    733722      ! 
    734       CALL wrk_dealloc( jpij,        indxi, indxj ) 
    735       CALL wrk_dealloc( jpij,        zswitch, fvol ) 
    736       CALL wrk_dealloc( jpij,        afrac, ardg1, ardg2, vsrdg, esrdg, dhr, dhr2 ) 
    737       CALL wrk_dealloc( jpij,        vrdg1, vrdg2, vsw  , srdg1, srdg2, smsw, oirdg1, oirdg2 ) 
    738       CALL wrk_dealloc( jpij,        afrft, arft1, arft2, virft, vsrft, esrft, smrft, oirft1, oirft2 ) 
    739       CALL wrk_dealloc( jpij,nlay_i, eirft, erdg1, erdg2, ersw ) 
    740723      ! 
    741724   END SUBROUTINE lim_itd_me_ridgeshift 
     
    760743      INTEGER             ::   numts_rm    ! number of time steps for the P smoothing 
    761744      REAL(wp)            ::   zp, z1_3    ! local scalars 
    762       REAL(wp), POINTER, DIMENSION(:,:) ::   zworka           ! temporary array used here 
    763       REAL(wp), POINTER, DIMENSION(:,:) ::   zstrp1, zstrp2   ! strength at previous time steps 
     745      REAL(wp), DIMENSION(jpi,jpj) ::   zworka           ! temporary array used here 
     746      REAL(wp), DIMENSION(jpi,jpj) ::   zstrp1, zstrp2   ! strength at previous time steps 
    764747      !!---------------------------------------------------------------------- 
    765748 
    766       CALL wrk_alloc( jpi,jpj, zworka, zstrp1, zstrp2 ) 
    767749 
    768750      !------------------------------------------------------------------------------! 
     
    896878      ENDIF ! ksmooth 
    897879 
    898       CALL wrk_dealloc( jpi,jpj, zworka, zstrp1, zstrp2 ) 
    899880      ! 
    900881   END SUBROUTINE lim_itd_me_icestrength 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90

    r7753 r7910  
    2727   USE in_out_manager   ! I/O manager 
    2828   USE lib_mpp          ! MPP library 
    29    USE wrk_nemo         ! work arrays 
    3029   USE lib_fortran      ! to use key_nosignedzero 
    3130   USE limcons          ! conservation tests 
     
    6766      CHARACTER (len = 15) :: fieldid 
    6867 
    69       INTEGER , POINTER, DIMENSION(:,:,:) ::   zdonor   ! donor category index 
    70  
    71       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdhice      ! ice thickness increment 
    72       REAL(wp), POINTER, DIMENSION(:,:,:) ::   g0          ! coefficients for fitting the line of the ITD 
    73       REAL(wp), POINTER, DIMENSION(:,:,:) ::   g1          ! coefficients for fitting the line of the ITD 
    74       REAL(wp), POINTER, DIMENSION(:,:,:) ::   hL          ! left boundary for the ITD for each thickness 
    75       REAL(wp), POINTER, DIMENSION(:,:,:) ::   hR          ! left boundary for the ITD for each thickness 
    76       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zht_i_b     ! old ice thickness 
    77       REAL(wp), POINTER, DIMENSION(:,:,:) ::   dummy_es 
    78       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdaice, zdvice          ! local increment of ice area and volume 
    79       REAL(wp), POINTER, DIMENSION(:)     ::   zvetamin, zvetamax      ! maximum values for etas 
    80       INTEGER , POINTER, DIMENSION(:)     ::   nind_i, nind_j          ! compressed indices for i/j directions 
     68      INTEGER , DIMENSION(jpi,jpj,jpl-1) ::   zdonor   ! donor category index 
     69 
     70      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zdhice      ! ice thickness increment 
     71      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   g0          ! coefficients for fitting the line of the ITD 
     72      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   g1          ! coefficients for fitting the line of the ITD 
     73      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   hL          ! left boundary for the ITD for each thickness 
     74      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   hR          ! left boundary for the ITD for each thickness 
     75      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zht_i_b     ! old ice thickness 
     76      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   dummy_es 
     77      REAL(wp), DIMENSION(jpi,jpj,jpl-1) ::   zdaice, zdvice          ! local increment of ice area and volume 
     78      REAL(wp), DIMENSION((jpi+1)*(jpj+1))     ::   zvetamin, zvetamax      ! maximum values for etas 
     79      INTEGER , DIMENSION((jpi+1)*(jpj+1))     ::   nind_i, nind_j          ! compressed indices for i/j directions 
    8180      INTEGER                             ::   nbrem                   ! number of cells with ice to transfer 
    8281      REAL(wp)                            ::   zslope                  ! used to compute local thermodynamic "speeds" 
    83       REAL(wp), POINTER, DIMENSION(:,:)   ::   zhb0, zhb1              ! category boundaries for thinnes categories 
    84       REAL(wp), POINTER, DIMENSION(:,:)   ::   vt_i_init, vt_i_final   !  ice volume summed over categories 
    85       REAL(wp), POINTER, DIMENSION(:,:)   ::   vt_s_init, vt_s_final   !  snow volume summed over categories 
    86       REAL(wp), POINTER, DIMENSION(:,:)   ::   et_i_init, et_i_final   !  ice energy summed over categories 
    87       REAL(wp), POINTER, DIMENSION(:,:)   ::   et_s_init, et_s_final   !  snow energy summed over categories 
    88       INTEGER , POINTER, DIMENSION(:,:)   ::   zremap_flag      ! compute remapping or not ???? 
    89       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zhbnew           ! new boundaries of ice categories 
    90       !!------------------------------------------------------------------ 
    91  
    92       CALL wrk_alloc( jpi,jpj, zremap_flag ) 
    93       CALL wrk_alloc( jpi,jpj,jpl-1, zdonor ) 
    94       CALL wrk_alloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es ) 
    95       CALL wrk_alloc( jpi,jpj,jpl-1, zdaice, zdvice )    
    96       CALL wrk_alloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )    
    97       CALL wrk_alloc( (jpi+1)*(jpj+1), zvetamin, zvetamax )    
    98       CALL wrk_alloc( (jpi+1)*(jpj+1), nind_i, nind_j )  
    99       CALL wrk_alloc( jpi,jpj, zhb0,zhb1,vt_i_init,vt_i_final,vt_s_init,vt_s_final,et_i_init,et_i_final,et_s_init,et_s_final ) 
     82      REAL(wp), DIMENSION(jpi,jpj)   ::   zhb0, zhb1              ! category boundaries for thinnes categories 
     83      REAL(wp), DIMENSION(jpi,jpj)   ::   vt_i_init, vt_i_final   !  ice volume summed over categories 
     84      REAL(wp), DIMENSION(jpi,jpj)   ::   vt_s_init, vt_s_final   !  snow volume summed over categories 
     85      REAL(wp), DIMENSION(jpi,jpj)   ::   et_i_init, et_i_final   !  ice energy summed over categories 
     86      REAL(wp), DIMENSION(jpi,jpj)   ::   et_s_init, et_s_final   !  snow energy summed over categories 
     87      INTEGER , DIMENSION(jpi,jpj)   ::   zremap_flag      ! compute remapping or not ???? 
     88      REAL(wp), DIMENSION(jpi,jpj,0:jpl) ::   zhbnew           ! new boundaries of ice categories 
     89      !!------------------------------------------------------------------ 
     90 
    10091 
    10192      !!---------------------------------------------------------------------------------------------- 
     
    383374      ENDIF 
    384375 
    385       CALL wrk_dealloc( jpi,jpj, zremap_flag ) 
    386       CALL wrk_dealloc( jpi,jpj,jpl-1, zdonor ) 
    387       CALL wrk_dealloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es ) 
    388       CALL wrk_dealloc( jpi,jpj,jpl-1, zdaice, zdvice )    
    389       CALL wrk_dealloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )    
    390       CALL wrk_dealloc( (jpi+1)*(jpj+1), zvetamin, zvetamax )    
    391       CALL wrk_dealloc( (jpi+1)*(jpj+1), nind_i, nind_j )  
    392       CALL wrk_dealloc( jpi,jpj, zhb0,zhb1,vt_i_init,vt_i_final,vt_s_init,vt_s_final,et_i_init,et_i_final,et_s_init,et_s_final ) 
    393376 
    394377   END SUBROUTINE lim_itd_th_rem 
     
    477460      INTEGER ::   ii, ij                     ! indices when changing from 2D-1D is done 
    478461 
    479       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zaTsfn 
    480       REAL(wp), POINTER, DIMENSION(:,:)   ::   zworka            ! temporary array used here 
     462      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zaTsfn 
     463      REAL(wp), DIMENSION(jpi,jpj)   ::   zworka            ! temporary array used here 
    481464 
    482465      REAL(wp) ::   zdvsnow, zdesnow   ! snow volume and energy transferred 
     
    486469      REAL(wp) ::   zdaTsf             ! aicen*Tsfcn transferred 
    487470 
    488       INTEGER, POINTER, DIMENSION(:) ::   nind_i, nind_j   ! compressed indices for i/j directions 
     471      INTEGER, DIMENSION((jpi+1)*(jpj+1)) ::   nind_i, nind_j   ! compressed indices for i/j directions 
    489472 
    490473      INTEGER  ::   nbrem             ! number of cells with ice to transfer 
    491474      !!------------------------------------------------------------------ 
    492475 
    493       CALL wrk_alloc( jpi,jpj,jpl, zaTsfn ) 
    494       CALL wrk_alloc( jpi,jpj, zworka ) 
    495       CALL wrk_alloc( (jpi+1)*(jpj+1), nind_i, nind_j ) 
    496476 
    497477      !---------------------------------------------------------------------------------------------- 
     
    621601      END DO 
    622602      ! 
    623       CALL wrk_dealloc( jpi,jpj,jpl, zaTsfn ) 
    624       CALL wrk_dealloc( jpi,jpj, zworka ) 
    625       CALL wrk_dealloc( (jpi+1)*(jpj+1), nind_i, nind_j ) 
    626603      ! 
    627604   END SUBROUTINE lim_itd_shiftice 
     
    643620      CHARACTER (len = 15) :: fieldid 
    644621 
    645       INTEGER , POINTER, DIMENSION(:,:,:) ::   zdonor           ! donor category index 
    646       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdaice, zdvice   ! ice area and volume transferred 
    647  
    648       REAL(wp), POINTER, DIMENSION(:,:) ::   vt_i_init, vt_i_final   ! ice volume summed over categories 
    649       REAL(wp), POINTER, DIMENSION(:,:) ::   vt_s_init, vt_s_final   ! snow volume summed over categories 
     622      INTEGER , DIMENSION(jpi,jpj,jpl) ::   zdonor           ! donor category index 
     623      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zdaice, zdvice   ! ice area and volume transferred 
     624 
     625      REAL(wp), DIMENSION(jpi,jpj) ::   vt_i_init, vt_i_final   ! ice volume summed over categories 
     626      REAL(wp), DIMENSION(jpi,jpj) ::   vt_s_init, vt_s_final   ! snow volume summed over categories 
    650627      !!------------------------------------------------------------------ 
    651628       
    652       CALL wrk_alloc( jpi,jpj,jpl, zdonor )   ! interger 
    653       CALL wrk_alloc( jpi,jpj,jpl, zdaice, zdvice ) 
    654       CALL wrk_alloc( jpi,jpj, vt_i_init, vt_i_final, vt_s_init, vt_s_final ) 
    655629      !      
    656630      IF( con_i ) THEN                 ! conservation check 
     
    772746      ENDIF 
    773747      ! 
    774       CALL wrk_dealloc( jpi,jpj,jpl, zdonor ) 
    775       CALL wrk_dealloc( jpi,jpj,jpl, zdaice, zdvice ) 
    776       CALL wrk_dealloc( jpi,jpj, vt_i_init, vt_i_final, vt_s_init, vt_s_final ) 
    777748 
    778749   END SUBROUTINE lim_itd_th_reb 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90

    r7753 r7910  
    2828   USE lbclnk         ! Lateral Boundary Condition / MPP link 
    2929   USE lib_mpp        ! MPP library 
    30    USE wrk_nemo       ! work arrays 
    3130   USE in_out_manager ! I/O manager 
    3231   USE prtctl         ! Print control 
     
    123122      REAL(wp) ::   zintb, zintn                                             ! dummy argument 
    124123       
    125       REAL(wp), POINTER, DIMENSION(:,:) ::   z1_e1t0, z1_e2t0                ! scale factors 
    126       REAL(wp), POINTER, DIMENSION(:,:) ::   zp_delt                         ! P/delta at T points 
     124      REAL(wp), DIMENSION(jpi,jpj) ::   z1_e1t0, z1_e2t0                ! scale factors 
     125      REAL(wp), DIMENSION(jpi,jpj) ::   zp_delt                         ! P/delta at T points 
    127126      ! 
    128       REAL(wp), POINTER, DIMENSION(:,:) ::   zaU   , zaV                     ! ice fraction on U/V points 
    129       REAL(wp), POINTER, DIMENSION(:,:) ::   zmU_t, zmV_t                    ! ice/snow mass/dt on U/V points 
    130       REAL(wp), POINTER, DIMENSION(:,:) ::   zmf                             ! coriolis parameter at T points 
    131       REAL(wp), POINTER, DIMENSION(:,:) ::   zTauU_ia , ztauV_ia             ! ice-atm. stress at U-V points 
    132       REAL(wp), POINTER, DIMENSION(:,:) ::   zspgU , zspgV                   ! surface pressure gradient at U/V points 
    133       REAL(wp), POINTER, DIMENSION(:,:) ::   v_oceU, u_oceV, v_iceU, u_iceV  ! ocean/ice u/v component on V/U points                            
    134       REAL(wp), POINTER, DIMENSION(:,:) ::   zfU   , zfV                     ! internal stresses 
     127      REAL(wp), DIMENSION(jpi,jpj) ::   zaU   , zaV                     ! ice fraction on U/V points 
     128      REAL(wp), DIMENSION(jpi,jpj) ::   zmU_t, zmV_t                    ! ice/snow mass/dt on U/V points 
     129      REAL(wp), DIMENSION(jpi,jpj) ::   zmf                             ! coriolis parameter at T points 
     130      REAL(wp), DIMENSION(jpi,jpj) ::   zTauU_ia , ztauV_ia             ! ice-atm. stress at U-V points 
     131      REAL(wp), DIMENSION(jpi,jpj) ::   zspgU , zspgV                   ! surface pressure gradient at U/V points 
     132      REAL(wp), DIMENSION(jpi,jpj) ::   v_oceU, u_oceV, v_iceU, u_iceV  ! ocean/ice u/v component on V/U points                            
     133      REAL(wp), DIMENSION(jpi,jpj) ::   zfU   , zfV                     ! internal stresses 
    135134       
    136       REAL(wp), POINTER, DIMENSION(:,:) ::   zds                             ! shear 
    137       REAL(wp), POINTER, DIMENSION(:,:) ::   zs1, zs2, zs12                  ! stress tensor components 
    138       REAL(wp), POINTER, DIMENSION(:,:) ::   zu_ice, zv_ice, zresr           ! check convergence 
    139       REAL(wp), POINTER, DIMENSION(:,:) ::   zpice                           ! array used for the calculation of ice surface slope: 
     135      REAL(wp), DIMENSION(jpi,jpj) ::   zds                             ! shear 
     136      REAL(wp), DIMENSION(jpi,jpj) ::   zs1, zs2, zs12                  ! stress tensor components 
     137      REAL(wp), DIMENSION(jpi,jpj) ::   zu_ice, zv_ice, zresr           ! check convergence 
     138      REAL(wp), DIMENSION(jpi,jpj) ::   zpice                           ! array used for the calculation of ice surface slope: 
    140139                                                                             !   ocean surface (ssh_m) if ice is not embedded 
    141140                                                                             !   ice top surface if ice is embedded    
    142       REAL(wp), POINTER, DIMENSION(:,:) ::   zswitchU, zswitchV              ! dummy arrays 
    143       REAL(wp), POINTER, DIMENSION(:,:) ::   zmaskU, zmaskV                  ! mask for ice presence 
    144       REAL(wp), POINTER, DIMENSION(:,:) ::   zfmask, zwf                     ! mask at F points for the ice 
     141      REAL(wp), DIMENSION(jpi,jpj) ::   zswitchU, zswitchV              ! dummy arrays 
     142      REAL(wp), DIMENSION(jpi,jpj) ::   zmaskU, zmaskV                  ! mask for ice presence 
     143      REAL(wp), DIMENSION(jpi,jpj) ::   zfmask, zwf                     ! mask at F points for the ice 
    145144 
    146145      REAL(wp), PARAMETER               ::   zepsi  = 1.0e-20_wp             ! tolerance parameter 
     
    149148      !!------------------------------------------------------------------- 
    150149 
    151       CALL wrk_alloc( jpi,jpj, z1_e1t0, z1_e2t0, zp_delt ) 
    152       CALL wrk_alloc( jpi,jpj, zaU, zaV, zmU_t, zmV_t, zmf, zTauU_ia, ztauV_ia ) 
    153       CALL wrk_alloc( jpi,jpj, zspgU, zspgV, v_oceU, u_oceV, v_iceU, u_iceV, zfU, zfV ) 
    154       CALL wrk_alloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice ) 
    155       CALL wrk_alloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf ) 
    156150 
    157151#if defined key_agrif  
     
    698692      !      
    699693       
    700       CALL wrk_dealloc( jpi,jpj, z1_e1t0, z1_e2t0, zp_delt ) 
    701       CALL wrk_dealloc( jpi,jpj, zaU, zaV, zmU_t, zmV_t, zmf, zTauU_ia, ztauV_ia ) 
    702       CALL wrk_dealloc( jpi,jpj, zspgU, zspgV, v_oceU, u_oceV, v_iceU, u_iceV, zfU, zfV ) 
    703       CALL wrk_dealloc( jpi,jpj, zds, zs1, zs2, zs12, zu_ice, zv_ice, zresr, zpice ) 
    704       CALL wrk_dealloc( jpi,jpj, zswitchU, zswitchV, zmaskU, zmaskV, zfmask, zwf ) 
    705694 
    706695   END SUBROUTINE lim_rhg 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90

    r7813 r7910  
    2424   USE iom            ! I/O library 
    2525   USE lib_mpp        ! MPP library 
    26    USE wrk_nemo       ! work arrays 
    2726   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2827   USE limctl 
     
    107106      CHARACTER(len=25) ::   znam 
    108107      CHARACTER(len=2)  ::   zchar, zchar1 
    109       REAL(wp), POINTER, DIMENSION(:,:) :: z2d 
    110       !!---------------------------------------------------------------------- 
    111  
    112       CALL wrk_alloc( jpi, jpj, z2d ) 
     108      REAL(wp), DIMENSION(jpi,jpj) :: z2d 
     109      !!---------------------------------------------------------------------- 
     110 
    113111 
    114112      iter = kt + nn_fsbc - 1   ! ice restarts are written at kt == nitrst - nn_fsbc + 1 
     
    301299      ENDIF 
    302300      ! 
    303       CALL wrk_dealloc( jpi, jpj, z2d ) 
    304301      ! 
    305302   END SUBROUTINE lim_rst_write 
     
    314311      INTEGER :: ji, jj, jk, jl 
    315312      REAL(wp) ::   zfice, ziter 
    316       REAL(wp), POINTER, DIMENSION(:,:) ::   z2d 
     313      REAL(wp), DIMENSION(jpi,jpj) ::   z2d 
    317314      CHARACTER(len=25) ::   znam 
    318315      CHARACTER(len=2)  ::   zchar, zchar1 
     
    321318      !!---------------------------------------------------------------------- 
    322319 
    323       CALL wrk_alloc( jpi, jpj, z2d ) 
    324320 
    325321      IF(lwp) THEN 
     
    528524      !CALL iom_close( numrir ) !clem: closed in sbcice_lim.F90 
    529525      ! 
    530       CALL wrk_dealloc( jpi, jpj, z2d ) 
    531526      ! 
    532527   END SUBROUTINE lim_rst_read 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r7753 r7910  
    4242   USE lbclnk         ! ocean lateral boundary condition - MPP exchanges 
    4343   USE lib_mpp        ! MPP library 
    44    USE wrk_nemo       ! work arrays 
    4544   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    4645 
     
    106105      REAL(wp) ::   zqmass           ! Heat flux associated with mass exchange ice->ocean (W.m-2) 
    107106      REAL(wp) ::   zqsr             ! New solar flux received by the ocean 
    108       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zalb_cs, zalb_os     ! 3D workspace 
    109       REAL(wp), POINTER, DIMENSION(:,:)   ::   zalb                 ! 2D workspace 
     107      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   zalb_cs, zalb_os     ! 3D workspace 
     108      REAL(wp), DIMENSION(jpi,jpj)   ::   zalb                 ! 2D workspace 
    110109      !!--------------------------------------------------------------------- 
    111110 
     
    121120       
    122121      ! albedo output 
    123       CALL wrk_alloc( jpi,jpj, zalb )     
    124122 
    125123      zalb(:,:) = 0._wp 
     
    132130      IF( iom_use('albedo'  ) )  CALL iom_put( "albedo"  , zalb(:,:) )           ! ice albedo output 
    133131 
    134       CALL wrk_dealloc( jpi,jpj, zalb )     
    135132 
    136133      DO jj = 1, jpj 
     
    210207      !    Snow/ice albedo (only if sent to coupler, useless in forced mode)   ! 
    211208      !------------------------------------------------------------------------! 
    212       CALL wrk_alloc( jpi,jpj,jpl,   zalb_cs, zalb_os )     
    213209      CALL albedo_ice( t_su, ht_i, ht_s, zalb_cs, zalb_os )  ! cloud-sky and overcast-sky ice albedos 
    214210      alb_ice(:,:,:) = ( 1. - cldf_ice ) * zalb_cs(:,:,:) + cldf_ice * zalb_os(:,:,:) 
    215       CALL wrk_dealloc( jpi,jpj,jpl,   zalb_cs, zalb_os ) 
    216211 
    217212      ! conservation test 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r7813 r7910  
    4141   USE lbclnk         ! lateral boundary condition - MPP links 
    4242   USE lib_mpp        ! MPP library 
    43    USE wrk_nemo       ! work arrays 
    4443   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    4544   USE timing         ! Timing 
     
    8786      REAL(wp), PARAMETER :: zfric_umin = 0._wp           ! lower bound for the friction velocity (cice value=5.e-04) 
    8887      REAL(wp), PARAMETER :: zch        = 0.0057_wp       ! heat transfer coefficient 
    89       REAL(wp), POINTER, DIMENSION(:,:) ::   zu_io, zv_io, zfric   ! ice-ocean velocity (m/s) and frictional velocity (m2/s2) 
     88      REAL(wp), DIMENSION(jpi,jpj) ::   zu_io, zv_io, zfric   ! ice-ocean velocity (m/s) and frictional velocity (m2/s2) 
    9089      ! 
    9190      !!------------------------------------------------------------------- 
     
    9392      IF( nn_timing == 1 )   CALL timing_start('limthd') 
    9493 
    95       CALL wrk_alloc( jpi,jpj, zu_io, zv_io, zfric ) 
    9694 
    9795      IF( kt == nit000 .AND. lwp ) THEN 
     
    342340      IF( ln_ctl )       CALL lim_prt3D( 'limthd' ) 
    343341      ! 
    344       CALL wrk_dealloc( jpi,jpj, zu_io, zv_io, zfric ) 
    345342      ! 
    346343      IF( nn_timing == 1 )  CALL timing_stop('limthd') 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_da.F90

    r7753 r7910  
    1717   USE ice                    ! LIM variables 
    1818   USE lib_mpp                ! MPP library 
    19    USE wrk_nemo               ! work arrays 
    2019   USE lib_fortran            ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2120 
     
    104103      REAL(wp), PARAMETER ::   zm2   = 1.36_wp 
    105104      ! 
    106       REAL(wp), POINTER, DIMENSION(:,:) ::   zda_tot 
     105      REAL(wp), DIMENSION(jpi,jpj) ::   zda_tot 
    107106      !!--------------------------------------------------------------------- 
    108       CALL wrk_alloc( jpi,jpj, zda_tot ) 
    109107 
    110108      !------------------------------------------------------------! 
     
    168166      WHERE( a_i == 0._wp ) ht_i = 0._wp 
    169167      ! 
    170       CALL wrk_dealloc( jpi,jpj, zda_tot ) 
    171168      ! 
    172169   END SUBROUTINE lim_thd_da 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r7646 r7910  
    2323   USE in_out_manager ! I/O manager 
    2424   USE lib_mpp        ! MPP library 
    25    USE wrk_nemo       ! work arrays 
    2625   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2726    
     
    8988      REAL(wp) ::   zsstK        ! SST in Kelvin 
    9089 
    91       REAL(wp), POINTER, DIMENSION(:) ::   zqprec      ! energy of fallen snow                       (J.m-3) 
    92       REAL(wp), POINTER, DIMENSION(:) ::   zq_su       ! heat for surface ablation                   (J.m-2) 
    93       REAL(wp), POINTER, DIMENSION(:) ::   zq_bo       ! heat for bottom ablation                    (J.m-2) 
    94       REAL(wp), POINTER, DIMENSION(:) ::   zq_rema     ! remaining heat at the end of the routine    (J.m-2) 
    95       REAL(wp), POINTER, DIMENSION(:) ::   zf_tt       ! Heat budget to determine melting or freezing(W.m-2) 
    96       REAL(wp), POINTER, DIMENSION(:) ::   zevap_rema  ! remaining mass flux from sublimation        (kg.m-2) 
    97  
    98       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_mel   ! snow melt  
    99       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_pre   ! snow precipitation  
    100       REAL(wp), POINTER, DIMENSION(:) ::   zdh_s_sub   ! snow sublimation 
    101  
    102       REAL(wp), POINTER, DIMENSION(:,:) ::   zdeltah 
    103       REAL(wp), POINTER, DIMENSION(:,:) ::   zh_i      ! ice layer thickness 
    104       INTEGER , POINTER, DIMENSION(:,:) ::   icount    ! number of layers vanished by melting  
    105  
    106       REAL(wp), POINTER, DIMENSION(:) ::   zqh_i       ! total ice heat content  (J.m-2) 
    107       REAL(wp), POINTER, DIMENSION(:) ::   zsnw        ! distribution of snow after wind blowing 
     90      REAL(wp), DIMENSION(jpij) ::   zqprec      ! energy of fallen snow                       (J.m-3) 
     91      REAL(wp), DIMENSION(jpij) ::   zq_su       ! heat for surface ablation                   (J.m-2) 
     92      REAL(wp), DIMENSION(jpij) ::   zq_bo       ! heat for bottom ablation                    (J.m-2) 
     93      REAL(wp), DIMENSION(jpij) ::   zq_rema     ! remaining heat at the end of the routine    (J.m-2) 
     94      REAL(wp), DIMENSION(jpij) ::   zf_tt       ! Heat budget to determine melting or freezing(W.m-2) 
     95      REAL(wp), DIMENSION(jpij) ::   zevap_rema  ! remaining mass flux from sublimation        (kg.m-2) 
     96 
     97      REAL(wp), DIMENSION(jpij) ::   zdh_s_mel   ! snow melt  
     98      REAL(wp), DIMENSION(jpij) ::   zdh_s_pre   ! snow precipitation  
     99      REAL(wp), DIMENSION(jpij) ::   zdh_s_sub   ! snow sublimation 
     100 
     101      REAL(wp), DIMENSION(jpij,nlay_i) ::   zdeltah 
     102      REAL(wp), DIMENSION(jpij,nlay_i) ::   zh_i      ! ice layer thickness 
     103      INTEGER , DIMENSION(jpij,nlay_i) ::   icount    ! number of layers vanished by melting  
     104 
     105      REAL(wp), DIMENSION(jpij) ::   zqh_i       ! total ice heat content  (J.m-2) 
     106      REAL(wp), DIMENSION(jpij) ::   zsnw        ! distribution of snow after wind blowing 
    108107 
    109108      REAL(wp) :: zswitch_sal 
     
    120119      END SELECT 
    121120 
    122       CALL wrk_alloc( jpij, zqprec, zq_su, zq_bo, zf_tt, zq_rema, zsnw, zevap_rema ) 
    123       CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zqh_i ) 
    124       CALL wrk_alloc( jpij, nlay_i, zdeltah, zh_i ) 
    125       CALL wrk_alloc( jpij, nlay_i, icount ) 
    126121        
    127122      zqprec   (:) = 0._wp ; zq_su    (:) = 0._wp ; zq_bo    (:) = 0._wp ; zf_tt(:) = 0._wp 
     
    681676      WHERE( ht_i_1d == 0._wp ) a_i_1d = 0._wp 
    682677       
    683       CALL wrk_dealloc( jpij, zqprec, zq_su, zq_bo, zf_tt, zq_rema, zsnw, zevap_rema ) 
    684       CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zqh_i ) 
    685       CALL wrk_dealloc( jpij, nlay_i, zdeltah, zh_i ) 
    686       CALL wrk_dealloc( jpij, nlay_i, icount ) 
    687678      ! 
    688679      ! 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r7813 r7910  
    2222   USE in_out_manager ! I/O manager 
    2323   USE lib_mpp        ! MPP library 
    24    USE wrk_nemo       ! work arrays 
    2524   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    2625 
     
    9998      INTEGER ::   minnumeqmin, maxnumeqmax 
    10099       
    101       INTEGER, POINTER, DIMENSION(:) ::   numeqmin   ! reference number of top equation 
    102       INTEGER, POINTER, DIMENSION(:) ::   numeqmax   ! reference number of bottom equation 
     100      INTEGER, DIMENSION(jpij) ::   numeqmin   ! reference number of top equation 
     101      INTEGER, DIMENSION(jpij) ::   numeqmax   ! reference number of bottom equation 
    103102       
    104103      REAL(wp) ::   zg1s      =  2._wp        ! for the tridiagonal system 
     
    113112      REAL(wp) ::   zhsu 
    114113       
    115       REAL(wp), POINTER, DIMENSION(:)     ::   isnow       ! switch for presence (1) or absence (0) of snow 
    116       REAL(wp), POINTER, DIMENSION(:)     ::   ztsub       ! old surface temperature (before the iterative procedure ) 
    117       REAL(wp), POINTER, DIMENSION(:)     ::   ztsubit     ! surface temperature at previous iteration 
    118       REAL(wp), POINTER, DIMENSION(:)     ::   zh_i        ! ice layer thickness 
    119       REAL(wp), POINTER, DIMENSION(:)     ::   zh_s        ! snow layer thickness 
    120       REAL(wp), POINTER, DIMENSION(:)     ::   zfsw        ! solar radiation absorbed at the surface 
    121       REAL(wp), POINTER, DIMENSION(:)     ::   zqns_ice_b  ! solar radiation absorbed at the surface 
    122       REAL(wp), POINTER, DIMENSION(:)     ::   zf          ! surface flux function 
    123       REAL(wp), POINTER, DIMENSION(:)     ::   dzf         ! derivative of the surface flux function 
    124       REAL(wp), POINTER, DIMENSION(:)     ::   zerrit      ! current error on temperature 
    125       REAL(wp), POINTER, DIMENSION(:)     ::   zdifcase    ! case of the equation resolution (1->4) 
    126       REAL(wp), POINTER, DIMENSION(:)     ::   zftrice     ! solar radiation transmitted through the ice 
    127       REAL(wp), POINTER, DIMENSION(:)     ::   zihic 
     114      REAL(wp), DIMENSION(jpij)     ::   isnow       ! switch for presence (1) or absence (0) of snow 
     115      REAL(wp), DIMENSION(jpij)     ::   ztsub       ! old surface temperature (before the iterative procedure ) 
     116      REAL(wp), DIMENSION(jpij)     ::   ztsubit     ! surface temperature at previous iteration 
     117      REAL(wp), DIMENSION(jpij)     ::   zh_i        ! ice layer thickness 
     118      REAL(wp), DIMENSION(jpij)     ::   zh_s        ! snow layer thickness 
     119      REAL(wp), DIMENSION(jpij)     ::   zfsw        ! solar radiation absorbed at the surface 
     120      REAL(wp), DIMENSION(jpij)     ::   zqns_ice_b  ! solar radiation absorbed at the surface 
     121      REAL(wp), DIMENSION(jpij)     ::   zf          ! surface flux function 
     122      REAL(wp), DIMENSION(jpij)     ::   dzf         ! derivative of the surface flux function 
     123      REAL(wp), DIMENSION(jpij)     ::   zerrit      ! current error on temperature 
     124      REAL(wp), DIMENSION(jpij)     ::   zdifcase    ! case of the equation resolution (1->4) 
     125      REAL(wp), DIMENSION(jpij)     ::   zftrice     ! solar radiation transmitted through the ice 
     126      REAL(wp), DIMENSION(jpij)     ::   zihic 
    128127       
    129       REAL(wp), POINTER, DIMENSION(:,:)   ::   ztcond_i    ! Ice thermal conductivity 
    130       REAL(wp), POINTER, DIMENSION(:,:)   ::   zradtr_i    ! Radiation transmitted through the ice 
    131       REAL(wp), POINTER, DIMENSION(:,:)   ::   zradab_i    ! Radiation absorbed in the ice 
    132       REAL(wp), POINTER, DIMENSION(:,:)   ::   zkappa_i    ! Kappa factor in the ice 
    133       REAL(wp), POINTER, DIMENSION(:,:)   ::   ztib        ! Old temperature in the ice 
    134       REAL(wp), POINTER, DIMENSION(:,:)   ::   zeta_i      ! Eta factor in the ice 
    135       REAL(wp), POINTER, DIMENSION(:,:)   ::   ztitemp     ! Temporary temperature in the ice to check the convergence 
    136       REAL(wp), POINTER, DIMENSION(:,:)   ::   zspeche_i   ! Ice specific heat 
    137       REAL(wp), POINTER, DIMENSION(:,:)   ::   z_i         ! Vertical cotes of the layers in the ice 
    138       REAL(wp), POINTER, DIMENSION(:,:)   ::   zradtr_s    ! Radiation transmited through the snow 
    139       REAL(wp), POINTER, DIMENSION(:,:)   ::   zradab_s    ! Radiation absorbed in the snow 
    140       REAL(wp), POINTER, DIMENSION(:,:)   ::   zkappa_s    ! Kappa factor in the snow 
    141       REAL(wp), POINTER, DIMENSION(:,:)   ::   zeta_s      ! Eta factor in the snow 
    142       REAL(wp), POINTER, DIMENSION(:,:)   ::   ztstemp     ! Temporary temperature in the snow to check the convergence 
    143       REAL(wp), POINTER, DIMENSION(:,:)   ::   ztsb        ! Temporary temperature in the snow 
    144       REAL(wp), POINTER, DIMENSION(:,:)   ::   z_s         ! Vertical cotes of the layers in the snow 
    145       REAL(wp), POINTER, DIMENSION(:,:)   ::   zindterm    ! 'Ind'ependent term 
    146       REAL(wp), POINTER, DIMENSION(:,:)   ::   zindtbis    ! Temporary 'ind'ependent term 
    147       REAL(wp), POINTER, DIMENSION(:,:)   ::   zdiagbis    ! Temporary 'dia'gonal term 
    148       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrid       ! Tridiagonal system terms 
     128      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   ztcond_i    ! Ice thermal conductivity 
     129      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zradtr_i    ! Radiation transmitted through the ice 
     130      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zradab_i    ! Radiation absorbed in the ice 
     131      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zkappa_i    ! Kappa factor in the ice 
     132      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   ztib        ! Old temperature in the ice 
     133      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zeta_i      ! Eta factor in the ice 
     134      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   ztitemp     ! Temporary temperature in the ice to check the convergence 
     135      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   zspeche_i   ! Ice specific heat 
     136      REAL(wp), DIMENSION(jpij,nlay_i+1)   ::   z_i         ! Vertical cotes of the layers in the ice 
     137      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   zradtr_s    ! Radiation transmited through the snow 
     138      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   zradab_s    ! Radiation absorbed in the snow 
     139      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   zkappa_s    ! Kappa factor in the snow 
     140      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   zeta_s      ! Eta factor in the snow 
     141      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   ztstemp     ! Temporary temperature in the snow to check the convergence 
     142      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   ztsb        ! Temporary temperature in the snow 
     143      REAL(wp), DIMENSION(jpij,nlay_s+1)   ::   z_s         ! Vertical cotes of the layers in the snow 
     144      REAL(wp), DIMENSION(jpij,nlay_i+3)   ::   zindterm    ! 'Ind'ependent term 
     145      REAL(wp), DIMENSION(jpij,nlay_i+3)   ::   zindtbis    ! Temporary 'ind'ependent term 
     146      REAL(wp), DIMENSION(jpij,nlay_i+3)   ::   zdiagbis    ! Temporary 'dia'gonal term 
     147      REAL(wp), DIMENSION(jpij,nlay_i+3,3) ::   ztrid       ! Tridiagonal system terms 
    149148       
    150149      ! diag errors on heat 
    151       REAL(wp), POINTER, DIMENSION(:)     :: zdq, zq_ini, zhfx_err 
     150      REAL(wp), DIMENSION(jpij)     :: zdq, zq_ini, zhfx_err 
    152151       
    153152      ! Mono-category 
     
    162161      REAL(wp)                            :: zheshth       ! dummy factor 
    163162       
    164       REAL(wp), POINTER, DIMENSION(:)     :: zghe          ! G(he), th. conduct enhancement factor, mono-cat 
     163      REAL(wp), DIMENSION(jpij)     :: zghe          ! G(he), th. conduct enhancement factor, mono-cat 
    165164       
    166165      !!------------------------------------------------------------------      
    167166      !  
    168       CALL wrk_alloc( jpij, numeqmin, numeqmax ) 
    169       CALL wrk_alloc( jpij, isnow, ztsub, ztsubit, zh_i, zh_s, zfsw ) 
    170       CALL wrk_alloc( jpij, zf, dzf, zqns_ice_b, zerrit, zdifcase, zftrice, zihic, zghe ) 
    171       CALL wrk_alloc( jpij,nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0 ) 
    172       CALL wrk_alloc( jpij,nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart=0 ) 
    173       CALL wrk_alloc( jpij,nlay_i+3, zindterm, zindtbis, zdiagbis  ) 
    174       CALL wrk_alloc( jpij,nlay_i+3,3, ztrid ) 
    175  
    176       CALL wrk_alloc( jpij, zdq, zq_ini, zhfx_err ) 
     167 
    177168 
    178169      ! --- diag error on heat diffusion - PART 1 --- ! 
     
    792783      END DO    
    793784      ! 
    794       CALL wrk_dealloc( jpij, numeqmin, numeqmax ) 
    795       CALL wrk_dealloc( jpij, isnow, ztsub, ztsubit, zh_i, zh_s, zfsw ) 
    796       CALL wrk_dealloc( jpij, zf, dzf, zqns_ice_b, zerrit, zdifcase, zftrice, zihic, zghe ) 
    797       CALL wrk_dealloc( jpij,nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 ) 
    798       CALL wrk_dealloc( jpij,nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart = 0 ) 
    799       CALL wrk_dealloc( jpij,nlay_i+3, zindterm, zindtbis, zdiagbis ) 
    800       CALL wrk_dealloc( jpij,nlay_i+3,3, ztrid ) 
    801       CALL wrk_dealloc( jpij, zdq, zq_ini, zhfx_err ) 
    802785 
    803786   END SUBROUTINE lim_thd_dif 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90

    r5134 r7910  
    2929   USE in_out_manager ! I/O manager 
    3030   USE lib_mpp        ! MPP library 
    31    USE wrk_nemo       ! work arrays 
    3231   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    3332 
     
    7675      INTEGER  :: jk0, jk1   !  old/new layer indices 
    7776      ! 
    78       REAL(wp), POINTER, DIMENSION(:,:) :: zqh_cum0, zh_cum0   ! old cumulative enthlapies and layers interfaces 
    79       REAL(wp), POINTER, DIMENSION(:,:) :: zqh_cum1, zh_cum1   ! new cumulative enthlapies and layers interfaces 
    80       REAL(wp), POINTER, DIMENSION(:)   :: zhnew               ! new layers thicknesses 
     77      REAL(wp), DIMENSION(jpij,0:nlay_i+2) :: zqh_cum0, zh_cum0   ! old cumulative enthlapies and layers interfaces 
     78      REAL(wp), DIMENSION(jpij,0:nlay_i) :: zqh_cum1, zh_cum1   ! new cumulative enthlapies and layers interfaces 
     79      REAL(wp), DIMENSION(jpij)   :: zhnew               ! new layers thicknesses 
    8180      !!------------------------------------------------------------------- 
    8281 
    83       CALL wrk_alloc( jpij, nlay_i+3, zqh_cum0, zh_cum0, kjstart = 0 ) 
    84       CALL wrk_alloc( jpij, nlay_i+1, zqh_cum1, zh_cum1, kjstart = 0 ) 
    85       CALL wrk_alloc( jpij, zhnew ) 
    8682 
    8783      !-------------------------------------------------------------------------- 
     
    146142       
    147143      ! 
    148       CALL wrk_dealloc( jpij, nlay_i+3, zqh_cum0, zh_cum0, kjstart = 0 ) 
    149       CALL wrk_dealloc( jpij, nlay_i+1, zqh_cum1, zh_cum1, kjstart = 0 ) 
    150       CALL wrk_dealloc( jpij, zhnew ) 
    151144      ! 
    152145   END SUBROUTINE lim_thd_ent 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r7753 r7910  
    2626   USE in_out_manager ! I/O manager 
    2727   USE lib_mpp        ! MPP library 
    28    USE wrk_nemo       ! work arrays 
    2928   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    3029   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     
    8584      REAL(wp) ::   zv_newfra 
    8685   
    87       INTEGER , POINTER, DIMENSION(:) ::   jcat        ! indexes of categories where new ice grows 
    88       REAL(wp), POINTER, DIMENSION(:) ::   zswinew     ! switch for new ice or not 
    89  
    90       REAL(wp), POINTER, DIMENSION(:) ::   zv_newice   ! volume of accreted ice 
    91       REAL(wp), POINTER, DIMENSION(:) ::   za_newice   ! fractional area of accreted ice 
    92       REAL(wp), POINTER, DIMENSION(:) ::   zh_newice   ! thickness of accreted ice 
    93       REAL(wp), POINTER, DIMENSION(:) ::   ze_newice   ! heat content of accreted ice 
    94       REAL(wp), POINTER, DIMENSION(:) ::   zs_newice   ! salinity of accreted ice 
    95       REAL(wp), POINTER, DIMENSION(:) ::   zo_newice   ! age of accreted ice 
    96       REAL(wp), POINTER, DIMENSION(:) ::   zdv_res     ! residual volume in case of excessive heat budget 
    97       REAL(wp), POINTER, DIMENSION(:) ::   zda_res     ! residual area in case of excessive heat budget 
    98       REAL(wp), POINTER, DIMENSION(:) ::   zat_i_1d    ! total ice fraction     
    99       REAL(wp), POINTER, DIMENSION(:) ::   zv_frazb    ! accretion of frazil ice at the ice bottom 
    100       REAL(wp), POINTER, DIMENSION(:) ::   zvrel_1d    ! relative ice / frazil velocity (1D vector) 
    101  
    102       REAL(wp), POINTER, DIMENSION(:,:) ::   zv_b      ! old volume of ice in category jl 
    103       REAL(wp), POINTER, DIMENSION(:,:) ::   za_b      ! old area of ice in category jl 
    104       REAL(wp), POINTER, DIMENSION(:,:) ::   za_i_1d   ! 1-D version of a_i 
    105       REAL(wp), POINTER, DIMENSION(:,:) ::   zv_i_1d   ! 1-D version of v_i 
    106       REAL(wp), POINTER, DIMENSION(:,:) ::   zsmv_i_1d ! 1-D version of smv_i 
    107  
    108       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze_i_1d !: 1-D version of e_i 
    109  
    110       REAL(wp), POINTER, DIMENSION(:,:) ::   zvrel     ! relative ice / frazil velocity 
     86      INTEGER , DIMENSION(jpij) ::   jcat        ! indexes of categories where new ice grows 
     87      REAL(wp), DIMENSION(jpij) ::   zswinew     ! switch for new ice or not 
     88 
     89      REAL(wp), DIMENSION(jpij) ::   zv_newice   ! volume of accreted ice 
     90      REAL(wp), DIMENSION(jpij) ::   za_newice   ! fractional area of accreted ice 
     91      REAL(wp), DIMENSION(jpij) ::   zh_newice   ! thickness of accreted ice 
     92      REAL(wp), DIMENSION(jpij) ::   ze_newice   ! heat content of accreted ice 
     93      REAL(wp), DIMENSION(jpij) ::   zs_newice   ! salinity of accreted ice 
     94      REAL(wp), DIMENSION(jpij) ::   zo_newice   ! age of accreted ice 
     95      REAL(wp), DIMENSION(jpij) ::   zdv_res     ! residual volume in case of excessive heat budget 
     96      REAL(wp), DIMENSION(jpij) ::   zda_res     ! residual area in case of excessive heat budget 
     97      REAL(wp), DIMENSION(jpij) ::   zat_i_1d    ! total ice fraction     
     98      REAL(wp), DIMENSION(jpij) ::   zv_frazb    ! accretion of frazil ice at the ice bottom 
     99      REAL(wp), DIMENSION(jpij) ::   zvrel_1d    ! relative ice / frazil velocity (1D vector) 
     100 
     101      REAL(wp), DIMENSION(jpij,jpl) ::   zv_b      ! old volume of ice in category jl 
     102      REAL(wp), DIMENSION(jpij,jpl) ::   za_b      ! old area of ice in category jl 
     103      REAL(wp), DIMENSION(jpij,jpl) ::   za_i_1d   ! 1-D version of a_i 
     104      REAL(wp), DIMENSION(jpij,jpl) ::   zv_i_1d   ! 1-D version of v_i 
     105      REAL(wp), DIMENSION(jpij,jpl) ::   zsmv_i_1d ! 1-D version of smv_i 
     106 
     107      REAL(wp), DIMENSION(jpij,nlay_i,jpl) ::   ze_i_1d !: 1-D version of e_i 
     108 
     109      REAL(wp), DIMENSION(jpi,jpj) ::   zvrel     ! relative ice / frazil velocity 
    111110 
    112111      REAL(wp) :: zcai = 1.4e-3_wp                     ! ice-air drag (clem: should be dependent on coupling/forcing used) 
    113112      !!-----------------------------------------------------------------------! 
    114113 
    115       CALL wrk_alloc( jpij, jcat )   ! integer 
    116       CALL wrk_alloc( jpij, zswinew, zv_newice, za_newice, zh_newice, ze_newice, zs_newice, zo_newice ) 
    117       CALL wrk_alloc( jpij, zdv_res, zda_res, zat_i_1d, zv_frazb, zvrel_1d ) 
    118       CALL wrk_alloc( jpij,jpl, zv_b, za_b, za_i_1d, zv_i_1d, zsmv_i_1d ) 
    119       CALL wrk_alloc( jpij,nlay_i,jpl, ze_i_1d ) 
    120       CALL wrk_alloc( jpi,jpj, zvrel ) 
    121114 
    122115      CALL lim_var_agg(1) 
     
    512505 
    513506      ! 
    514       CALL wrk_dealloc( jpij, jcat )   ! integer 
    515       CALL wrk_dealloc( jpij, zswinew, zv_newice, za_newice, zh_newice, ze_newice, zs_newice, zo_newice ) 
    516       CALL wrk_dealloc( jpij, zdv_res, zda_res, zat_i_1d, zv_frazb, zvrel_1d ) 
    517       CALL wrk_dealloc( jpij,jpl, zv_b, za_b, za_i_1d, zv_i_1d, zsmv_i_1d ) 
    518       CALL wrk_dealloc( jpij,nlay_i,jpl, ze_i_1d ) 
    519       CALL wrk_dealloc( jpi,jpj, zvrel ) 
    520507      ! 
    521508   END SUBROUTINE lim_thd_lac 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r7753 r7910  
    2626   USE lbclnk         ! lateral boundary conditions -- MPP exchanges 
    2727   USE lib_mpp        ! MPP library 
    28    USE wrk_nemo       ! work arrays 
    2928   USE prtctl         ! Print control 
    3029   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     
    7271      REAL(wp) ::    zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b 
    7372      REAL(wp) ::    zdv, zda 
    74       REAL(wp), POINTER, DIMENSION(:,:)      ::   zatold, zeiold, zesold, zsmvold  
    75       REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zhimax, zviold, zvsold 
     73      REAL(wp), DIMENSION(jpi,jpj)      ::   zatold, zeiold, zesold, zsmvold  
     74      REAL(wp), DIMENSION(jpi,jpj,jpl)    ::   zhimax, zviold, zvsold 
    7675      ! --- diffusion --- ! 
    77       REAL(wp), POINTER, DIMENSION(:,:,:)    ::   zhdfptab 
     76      REAL(wp), DIMENSION(jpi,jpj,jpl*(ihdf_vars+nlay_i)+1)    ::   zhdfptab 
    7877      INTEGER , PARAMETER                    ::   ihdf_vars  = 6 ! Number of variables in which we apply horizontal diffusion 
    7978                                                                 !  inside limtrp for each ice category , not counting the  
     
    8180      ! --- ultimate macho only --- ! 
    8281      REAL(wp)                               ::   zdt 
    83       REAL(wp), POINTER, DIMENSION(:,:)      ::   zudy, zvdx, zcu_box, zcv_box 
     82      REAL(wp), DIMENSION(jpi,jpj)      ::   zudy, zvdx, zcu_box, zcv_box 
    8483      ! --- prather only --- ! 
    85       REAL(wp), POINTER, DIMENSION(:,:)      ::   zarea 
    86       REAL(wp), POINTER, DIMENSION(:,:,:)    ::   z0opw 
    87       REAL(wp), POINTER, DIMENSION(:,:,:)    ::   z0ice, z0snw, z0ai, z0es , z0smi , z0oi 
    88       REAL(wp), POINTER, DIMENSION(:,:,:,:)  ::   z0ei 
     84      REAL(wp), DIMENSION(jpi,jpj)      ::   zarea 
     85      REAL(wp), DIMENSION(jpi,jpj,1)    ::   z0opw 
     86      REAL(wp), DIMENSION(jpi,jpj,jpl)    ::   z0ice, z0snw, z0ai, z0es , z0smi , z0oi 
     87      REAL(wp), DIMENSION(jpi,jpj,nlay_i,jpl)  ::   z0ei 
    8988      !! 
    9089      !!--------------------------------------------------------------------- 
    9190      IF( nn_timing == 1 )  CALL timing_start('limtrp') 
    9291 
    93       CALL wrk_alloc( jpi,jpj,                            zatold, zeiold, zesold, zsmvold ) 
    94       CALL wrk_alloc( jpi,jpj,jpl,                        zhimax, zviold, zvsold ) 
    95       CALL wrk_alloc( jpi,jpj,jpl*(ihdf_vars + nlay_i)+1, zhdfptab) 
    9692  
    9793      IF( kt == nit000 .AND. lwp ) THEN 
     
    163159                       !=============================! 
    164160       
    165          CALL wrk_alloc( jpi,jpj, zudy, zvdx, zcu_box, zcv_box ) 
    166161       
    167162         IF( kt == nit000 .AND. lwp ) THEN 
     
    213208         END DO 
    214209         ! 
    215          CALL wrk_dealloc( jpi,jpj, zudy, zvdx, zcu_box, zcv_box ) 
    216210          
    217211                       !=============================! 
     
    219213                       !=============================! 
    220214 
    221          CALL wrk_alloc( jpi,jpj,            zarea ) 
    222          CALL wrk_alloc( jpi,jpj,1,          z0opw ) 
    223          CALL wrk_alloc( jpi,jpj,jpl,        z0ice, z0snw, z0ai, z0es , z0smi , z0oi ) 
    224          CALL wrk_alloc( jpi,jpj,nlay_i,jpl, z0ei ) 
    225215          
    226216         IF( kt == nit000 .AND. lwp ) THEN 
     
    354344         END DO 
    355345          
    356          CALL wrk_dealloc( jpi,jpj,            zarea ) 
    357          CALL wrk_dealloc( jpi,jpj,1,          z0opw ) 
    358          CALL wrk_dealloc( jpi,jpj,jpl,        z0ice, z0snw, z0ai, z0es , z0smi , z0oi ) 
    359          CALL wrk_dealloc( jpi,jpj,nlay_i,jpl, z0ei ) 
    360346 
    361347      END SELECT 
     
    525511      IF( ln_limctl )   CALL lim_prt( kt, iiceprt, jiceprt,-1, ' - ice dyn & trp - ' ) 
    526512      ! 
    527       CALL wrk_dealloc( jpi,jpj,                            zatold, zeiold, zesold, zsmvold ) 
    528       CALL wrk_dealloc( jpi,jpj,jpl,                        zhimax, zviold, zvsold ) 
    529       CALL wrk_dealloc( jpi,jpj,jpl*(ihdf_vars + nlay_i)+1, zhdfptab) 
    530513      ! 
    531514      IF( nn_timing == 1 )  CALL timing_stop('limtrp') 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r7813 r7910  
    4343   USE in_out_manager ! I/O manager 
    4444   USE lib_mpp        ! MPP library 
    45    USE wrk_nemo       ! work arrays 
    4645   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
    4746 
     
    289288      REAL(wp) ::   zfac0, zfac1, zsal 
    290289      REAL(wp) ::   zswi0, zswi01, zargtemp , zs_zero    
    291       REAL(wp), POINTER, DIMENSION(:,:,:) ::   z_slope_s, zalpha 
     290      REAL(wp), DIMENSION(jpi,jpj,jpl) ::   z_slope_s, zalpha 
    292291      REAL(wp), PARAMETER :: zsi0 = 3.5_wp 
    293292      REAL(wp), PARAMETER :: zsi1 = 4.5_wp 
    294293      !!------------------------------------------------------------------ 
    295294 
    296       CALL wrk_alloc( jpi, jpj, jpl, z_slope_s, zalpha ) 
    297295 
    298296      !--------------------------------------- 
     
    378376      ENDIF ! nn_icesal 
    379377      ! 
    380       CALL wrk_dealloc( jpi, jpj, jpl, z_slope_s, zalpha ) 
    381378      ! 
    382379   END SUBROUTINE lim_var_salprof 
     
    434431      REAL(wp) ::   zalpha, zswi0, zswi01, zs_zero              !   -      - 
    435432      ! 
    436       REAL(wp), POINTER, DIMENSION(:) ::   z_slope_s 
     433      REAL(wp), DIMENSION(jpij) ::   z_slope_s 
    437434      REAL(wp), PARAMETER :: zsi0 = 3.5_wp 
    438435      REAL(wp), PARAMETER :: zsi1 = 4.5_wp 
    439436      !!--------------------------------------------------------------------- 
    440437 
    441       CALL wrk_alloc( jpij, z_slope_s ) 
    442438 
    443439      !--------------------------------------- 
     
    503499      ENDIF 
    504500      ! 
    505       CALL wrk_dealloc( jpij, z_slope_s ) 
    506501      ! 
    507502   END SUBROUTINE lim_var_salprof1d 
     
    639634      REAL(wp), DIMENSION(:),   INTENT(in)    ::   zhti, zhts, zai    ! input ice/snow variables 
    640635      REAL(wp), DIMENSION(:,:), INTENT(inout) ::   zht_i, zht_s, za_i ! output ice/snow variables 
    641       INTEGER , POINTER, DIMENSION(:)         ::   itest 
     636      INTEGER , DIMENSION(4)         ::   itest 
    642637  
    643       CALL wrk_alloc( 4, itest ) 
    644638      !-------------------------------------------------------------------- 
    645639      ! initialisation of variables 
     
    765759      ENDDO 
    766760 
    767       CALL wrk_dealloc( 4, itest ) 
    768761      ! 
    769762    END SUBROUTINE lim_var_itd 
  • branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r7753 r7910  
    2222   USE lbclnk 
    2323   USE lib_mpp         ! MPP library 
    24    USE wrk_nemo        ! work arrays 
    2524   USE iom 
    2625   USE timing          ! Timing 
     
    5655      REAL(wp) ::  z1_365 
    5756      REAL(wp) ::  z2da, z2db, ztmp 
    58       REAL(wp), POINTER, DIMENSION(:,:,:) ::  zswi2 
    59       REAL(wp), POINTER, DIMENSION(:,:)   ::  z2d, zswi    ! 2D workspace 
     57      REAL(wp), DIMENSION(jpi,jpj,jpl) ::  zswi2 
     58      REAL(wp), DIMENSION(jpi,jpj)   ::  z2d, zswi    ! 2D workspace 
    6059      !!------------------------------------------------------------------- 
    6160 
    6261      IF( nn_timing == 1 )  CALL timing_start('limwri') 
    6362 
    64       CALL wrk_alloc( jpi,jpj,jpl, zswi2 ) 
    65       CALL wrk_alloc( jpi,jpj    , z2d, zswi ) 
    6663 
    6764      !----------------------------- 
     
    229226      !     not yet implemented 
    230227       
    231       CALL wrk_dealloc( jpi, jpj, jpl, zswi2 ) 
    232       CALL wrk_dealloc( jpi, jpj     , z2d, zswi ) 
    233228 
    234229      IF( nn_timing == 1 )  CALL timing_stop('limwri') 
Note: See TracChangeset for help on using the changeset viewer.