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/OPA_SRC/TRA/tranpc.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/OPA_SRC/TRA/tranpc.F90

    r2528 r2715  
    1818   USE zdf_oce         ! ocean vertical physics 
    1919   USE trdmod_oce      ! ocean active tracer trends 
    20    USE trdtra      ! ocean active tracer trends 
     20   USE trdtra          ! ocean active tracer trends 
    2121   USE eosbn2          ! equation of state (eos routine)  
    2222   USE lbclnk          ! lateral boundary conditions (or mpp link) 
    2323   USE in_out_manager  ! I/O manager 
     24   USE lib_mpp         ! MPP library 
    2425 
    2526   IMPLICIT NONE 
    2627   PRIVATE 
    2728 
    28    PUBLIC   tra_npc    ! routine called by step.F90 
     29   PUBLIC   tra_npc       ! routine called by step.F90 
    2930 
    3031   !! * Substitutions 
     
    5556      !! References : Madec, et al., 1991, JPO, 21, 9, 1349-1371. 
    5657      !!---------------------------------------------------------------------- 
     58      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released, wrk_in_use_xz, wrk_not_released_xz 
     59      USE wrk_nemo, ONLY:   ztrdt => wrk_3d_1 , ztrds => wrk_3d_2 , zrhop => wrk_3d_3 
     60      USE wrk_nemo, ONLY:   zwx   => wrk_xz_1 , zwy   => wrk_xz_2 , zwz   => wrk_xz_3 
     61      ! 
    5762      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    58       !! 
     63      ! 
    5964      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    6065      INTEGER  ::   inpcc        ! number of statically instable water column 
     
    6368      INTEGER  ::   ikbot, ik, ikup, ikdown   ! ??? 
    6469      REAL(wp) ::   ze3tot, zta, zsa, zraua, ze3dwn 
    65       REAL(wp), DIMENSION(jpi,jpk)     ::   zwx, zwy, zwz   ! 2D arrays 
    66       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zrhop           ! 3D arrays 
    67       REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ztrdt, ztrds 
    6870      !!---------------------------------------------------------------------- 
     71 
     72      ! Strictly 1 and 2 3D workspaces only needed if(l_trdtra) but it doesn't  
     73      ! cost us anything and makes code simpler. 
     74      IF( wrk_in_use(3, 1,2,3) .OR. wrk_in_use_xz(1,2,3) ) THEN 
     75         CALL ctl_stop('tra_npc: requested workspace arrays unavailable')   ;   RETURN 
     76      ENDIF 
    6977 
    7078      IF( MOD( kt, nn_npc ) == 0 ) THEN 
     
    7684 
    7785         IF( l_trdtra )   THEN                    !* Save ta and sa trends 
    78             ALLOCATE( ztrdt(jpi,jpj,jpk) )  ;    ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
    79             ALLOCATE( ztrds(jpi,jpj,jpk) )  ;    ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
     86            ztrdt(:,:,:) = tsa(:,:,:,jp_tem)  
     87            ztrds(:,:,:) = tsa(:,:,:,jp_sal) 
    8088         ENDIF 
    8189 
     
    192200            CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_npc, ztrdt ) 
    193201            CALL trd_tra( kt, 'TRA', jp_sal, jptra_trd_npc, ztrds ) 
    194             DEALLOCATE( ztrdt )      ;     DEALLOCATE( ztrds )  
    195202         ENDIF 
    196203       
    197204         ! Lateral boundary conditions on ( ta, sa )   ( Unchanged sign) 
    198205         ! ------------------------------============ 
    199          CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1. ) 
    200          CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1. ) 
     206         CALL lbc_lnk( tsa(:,:,:,jp_tem), 'T', 1. )   ;   CALL lbc_lnk( tsa(:,:,:,jp_sal), 'T', 1. ) 
    201207       
    202208 
     
    210216      ENDIF 
    211217      ! 
     218      IF( wrk_not_released(3, 1,2,3) .OR.   & 
     219          wrk_not_released_xz(1,2,3) )   CALL ctl_stop('tra_npc: failed to release workspace arrays') 
     220      ! 
    212221   END SUBROUTINE tra_npc 
    213222 
Note: See TracChangeset for help on using the changeset viewer.