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_2/limadv_2.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_2/limadv_2.F90

    r2528 r2715  
    2222   USE lbclnk 
    2323   USE in_out_manager     ! I/O manager 
     24   USE lib_mpp            ! MPP library 
    2425   USE prtctl             ! Print control 
    2526 
     
    5859      !! Reference:  Prather, 1986, JGR, 91, D6. 6671-6681. 
    5960      !!-------------------------------------------------------------------- 
     61      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     62      USE wrk_nemo, ONLY:   zf0  => wrk_2d_11 , zfx   => wrk_2d_12 , zfy    => wrk_2d_13 , zbet => wrk_2d_14   ! 2D workspace 
     63      USE wrk_nemo, ONLY:   zfm  => wrk_2d_15 , zfxx  => wrk_2d_16 , zfyy   => wrk_2d_17 , zfxy => wrk_2d_18   !  -      - 
     64      USE wrk_nemo, ONLY:   zalg => wrk_2d_19 , zalg1 => wrk_2d_20 , zalg1q => wrk_2d_21                       !  -      - 
     65      ! 
    6066      REAL(wp)                    , INTENT(in   ) ::   pdf                ! reduction factor for the time step 
    6167      REAL(wp)                    , INTENT(in   ) ::   pcrh               ! call lim_adv_x then lim_adv_y (=1) or the opposite (=0) 
     
    6571      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   psx , psy          ! 1st moments  
    6672      REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) ::   psxx, psyy, psxy   ! 2nd moments 
    67       !!  
     73      !  
    6874      INTEGER  ::   ji, jj                               ! dummy loop indices 
    6975      REAL(wp) ::   zs1max, zrdt, zslpmax, ztemp, zin0   ! temporary scalars 
    7076      REAL(wp) ::   zs1new, zalf , zalfq , zbt           !    -         - 
    7177      REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !    -         - 
    72       REAL(wp), DIMENSION(jpi,jpj) ::   zf0, zfx , zfy , zbet   ! 2D workspace 
    73       REAL(wp), DIMENSION(jpi,jpj) ::   zfm, zfxx, zfyy, zfxy   !  -      - 
    74       REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q     !  -      - 
    7578      !--------------------------------------------------------------------- 
     79 
     80      IF( wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
     81         CALL ctl_stop( 'lim_adv_x_2 : requested workspace arrays unavailable.' )   ;   RETURN 
     82      ENDIF 
    7683 
    7784      ! Limitation of moments.                                            
     
    218225      ENDIF 
    219226      ! 
     227      IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) )   & 
     228          CALL ctl_stop( 'lim_adv_x_2 : failed to release workspace arrays.' ) 
     229      ! 
    220230   END SUBROUTINE lim_adv_x_2 
    221231 
     
    235245      !! Reference:  Prather, 1986, JGR, 91, D6. 6671-6681. 
    236246      !!--------------------------------------------------------------------- 
     247      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     248      USE wrk_nemo, ONLY:   zf0  => wrk_2d_11 , zfx   => wrk_2d_12 , zfy    => wrk_2d_13 , zbet => wrk_2d_14   ! 2D workspace 
     249      USE wrk_nemo, ONLY:   zfm  => wrk_2d_15 , zfxx  => wrk_2d_16 , zfyy   => wrk_2d_17 , zfxy => wrk_2d_18   !  -      - 
     250      USE wrk_nemo, ONLY:   zalg => wrk_2d_19 , zalg1 => wrk_2d_20 , zalg1q => wrk_2d_21                       !  -      - 
     251      !! 
    237252      REAL(wp)                    , INTENT(in   ) ::   pdf                ! reduction factor for the time step 
    238253      REAL(wp)                    , INTENT(in   ) ::   pcrh               ! call lim_adv_x then lim_adv_y (=1) or the opposite (=0) 
     
    247262      REAL(wp) ::   zs1new, zalf , zalfq , zbt           !    -         - 
    248263      REAL(wp) ::   zs2new, zalf1, zalf1q, zbt1          !    -         - 
    249       REAL(wp), DIMENSION(jpi,jpj) ::   zf0, zfx , zfy , zbet   ! 2D workspace 
    250       REAL(wp), DIMENSION(jpi,jpj) ::   zfm, zfxx, zfyy, zfxy   !  -      - 
    251       REAL(wp), DIMENSION(jpi,jpj) ::   zalg, zalg1, zalg1q     !  -      - 
    252264      !--------------------------------------------------------------------- 
     265 
     266      IF(wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
     267         CALL ctl_stop( 'lim_adv_y_2 : requested workspace arrays unavailable.' )   ;   RETURN 
     268      END IF 
    253269 
    254270      ! Limitation of moments. 
     
    398414      ENDIF 
    399415      ! 
     416      IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
     417        CALL ctl_stop( 'lim_adv_y_2 : failed to release workspace arrays.' ) 
     418      END IF 
     419      ! 
    400420   END SUBROUTINE lim_adv_y_2 
    401421 
Note: See TracChangeset for help on using the changeset viewer.