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

Ignore:
Timestamp:
2011-03-30T17:58:35+02:00 (13 years ago)
Author:
rblod
Message:

First attempt to put dynamic allocation on the trunk

File:
1 edited

Legend:

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

    r2528 r2715  
    66   !! History :  LIM  ! 2008-03 (M. Vancoppenolle)  LIM-3 from LIM-2 code 
    77   !!            3.2  ! 2009-06 (F. Dupont)  correct a error in the North fold b. c. 
     8   !!            4.0  ! 2011-02 (G. Madec) dynamical allocation 
    89   !!-------------------------------------------------------------------- 
    910#if defined key_lim3 
     
    1415   !!   lim_adv_y  : advection of sea ice on y axis 
    1516   !!---------------------------------------------------------------------- 
    16    USE dom_oce 
    17    USE dom_ice 
    18    USE ice 
    19    USE lbclnk 
    20    USE in_out_manager  ! I/O manager 
    21    USE prtctl          ! Print control 
     17   USE dom_oce          ! ocean domain 
     18   USE dom_ice          ! LIM-3 domain 
     19   USE ice              ! LIM-3 variables 
     20   USE lbclnk           ! lateral boundary condition - MPP exchanges 
     21   USE in_out_manager   ! I/O manager 
     22   USE prtctl           ! Print control 
     23   USE lib_mpp          ! MPP library 
    2224 
    2325   IMPLICIT NONE 
     
    2729   PUBLIC   lim_adv_y   ! called by lim_trp 
    2830 
    29    REAL(wp)  ::   epsi20 = 1.e-20   ! constant values 
    30    REAL(wp)  ::   rzero  = 0.e0     !    -       - 
    31    REAL(wp)  ::   rone   = 1.e0     !    -       - 
     31   REAL(wp)  ::   epsi20 = 1.e-20_wp   ! constant values 
     32   REAL(wp)  ::   rzero  = 0._wp       !    -       - 
     33   REAL(wp)  ::   rone   = 1._wp       !    -       - 
    3234 
    3335   !! * Substitutions 
    3436#  include "vectopt_loop_substitute.h90" 
    3537   !!---------------------------------------------------------------------- 
    36    !! NEMO/LIM3 3.3 , UCL - NEMO Consortium (2010) 
     38   !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) 
    3739   !! $Id$ 
    38    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    39    !!---------------------------------------------------------------------- 
    40  
     40   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     41   !!---------------------------------------------------------------------- 
    4142CONTAINS 
    4243 
     
    5556      !! Reference:  Prather, 1986, JGR, 91, D6. 6671-6681. 
    5657      !!-------------------------------------------------------------------- 
     58      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     59      USE wrk_nemo, ONLY:   zf0  => wrk_2d_11 , zfx   => wrk_2d_12 , zfy    => wrk_2d_13 , zbet => wrk_2d_14   ! 2D workspace 
     60      USE wrk_nemo, ONLY:   zfm  => wrk_2d_15 , zfxx  => wrk_2d_16 , zfyy   => wrk_2d_17 , zfxy => wrk_2d_18   !  -      - 
     61      USE wrk_nemo, ONLY:   zalg => wrk_2d_19 , zalg1 => wrk_2d_20 , zalg1q => wrk_2d_21                       !  -      - 
     62      ! 
    5763      REAL(wp)                    , INTENT(in   ) ::   pdf                ! reduction factor for the time step 
    5864      REAL(wp)                    , INTENT(in   ) ::   pcrh               ! call lim_adv_x then lim_adv_y (=1) or the opposite (=0) 
     
    6470      !!  
    6571      INTEGER  ::   ji, jj                               ! dummy loop indices 
    66       REAL(wp) ::   zs1max, zrdt, zslpmax, ztemp, zin0   ! temporary scalars 
    67       REAL(wp) ::   zs1new, zalf , zalfq , zbt           !    -         - 
    68       REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !    -         - 
    69       REAL(wp), DIMENSION(jpi,jpj) ::   zf0, zfx , zfy , zbet   ! 2D workspace 
    70       REAL(wp), DIMENSION(jpi,jpj) ::   zfm, zfxx, zfyy, zfxy   !  -      - 
    71       REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q     !  -      - 
     72      REAL(wp) ::   zs1max, zrdt, zslpmax, ztemp, zin0   ! local scalars 
     73      REAL(wp) ::   zs1new, zalf , zalfq , zbt           !   -      - 
     74      REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !   -      - 
    7275      !--------------------------------------------------------------------- 
     76 
     77      IF( wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
     78         CALL ctl_stop('lim_adv_x: requested workspace arrays unavailable')   ;   RETURN 
     79      ENDIF 
    7380 
    7481      ! Limitation of moments.                                            
     
    216223         CALL prt_ctl(tab2d_1=psxy , clinfo1=' lim_adv_x: psxy :') 
    217224      ENDIF 
     225      ! 
     226      IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) )    & 
     227          CALL ctl_stop('lim_adv_x : failed to release workspace arrays') 
    218228      ! 
    219229   END SUBROUTINE lim_adv_x 
     
    234244      !! Reference:  Prather, 1986, JGR, 91, D6. 6671-6681. 
    235245      !!--------------------------------------------------------------------- 
     246      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     247      USE wrk_nemo, ONLY:   zf0  => wrk_2d_11 , zfx   => wrk_2d_12 , zfy    => wrk_2d_13 , zbet => wrk_2d_14   ! 2D workspace 
     248      USE wrk_nemo, ONLY:   zfm  => wrk_2d_15 , zfxx  => wrk_2d_16 , zfyy   => wrk_2d_17 , zfxy => wrk_2d_18   !  -      - 
     249      USE wrk_nemo, ONLY:   zalg => wrk_2d_19 , zalg1 => wrk_2d_20 , zalg1q => wrk_2d_21                       !  -      - 
     250      ! 
    236251      REAL(wp)                    , INTENT(in   ) ::   pdf                ! reduction factor for the time step 
    237252      REAL(wp)                    , INTENT(in   ) ::   pcrh               ! call lim_adv_x then lim_adv_y (=1) or the opposite (=0) 
     
    246261      REAL(wp) ::   zs1new, zalf , zalfq , zbt           !    -         - 
    247262      REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !    -         - 
    248       REAL(wp), DIMENSION(jpi,jpj) ::   zf0, zfx , zfy , zbet   ! 2D workspace 
    249       REAL(wp), DIMENSION(jpi,jpj) ::   zfm, zfxx, zfyy, zfxy   !  -      - 
    250       REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q     !  -      - 
    251263      !--------------------------------------------------------------------- 
     264 
     265      IF( wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
     266         CALL ctl_stop('lim_adv_y : requested workspace arrays unavailable')   ;   RETURN 
     267      ENDIF 
    252268 
    253269      ! Limitation of moments. 
     
    397413      ENDIF 
    398414      ! 
     415      IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) )    & 
     416         CALL ctl_stop('lim_adv_y: failed to release workspace arrays') 
     417      ! 
    399418   END SUBROUTINE lim_adv_y 
    400  
    401419 
    402420#else 
Note: See TracChangeset for help on using the changeset viewer.