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 2608 for branches/dev_r2586_dynamic_mem – NEMO

Ignore:
Timestamp:
2011-02-22T18:14:28+01:00 (13 years ago)
Author:
trackstand2
Message:

Replaced local workspaces with wrk_nemo module in TOP_SRC/TRP routines.

Location:
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90

    r2607 r2608  
    590590     USE trcdta,       ONLY: trc_dta_alloc 
    591591#endif 
     592#if   defined key_top && ( defined key_trdmld_trc   ||   defined key_esopa ) 
     593     USE trdmld_trc,   ONLY: trd_mld_trc_alloc 
     594#endif 
    592595     ! ...end of TOP-related alloc routines 
    593596 
     
    762765#if  defined key_top  &&  defined key_dtatrc 
    763766     ierr = ierr + trc_dta_alloc() 
     767#endif 
     768#if   defined key_top && ( defined key_trdmld_trc   ||   defined key_esopa ) 
     769     ierr = ierr + trd_mld_trc_alloc() 
    764770#endif 
    765771     ! ...end of TOP-related alloc routines 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90

    r2606 r2608  
    7474      !! ** Method  : - Update the tracer with the advection term following nadv 
    7575      !!---------------------------------------------------------------------- 
     76      USE wrk_nemo, ONLY: wrk_use, wrk_release 
     77      USE wrk_nemo, ONLY: zun => wrk_3d_1, zvn => wrk_3d_2, & 
     78                          zwn => wrk_3d_3   ! effective velocity 
    7679      !! 
    7780      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
    7881      ! 
    7982      INTEGER :: jk  
    80       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zun, zvn, zwn   ! effective velocity 
    8183      CHARACTER (len=22) :: charout 
    8284      !!---------------------------------------------------------------------- 
     85 
     86      IF(.NOT. wrk_use(3, 1,2,3))THEN 
     87         CALL ctl_stop('trc_adv : requested workspace arrays unavailable.') 
     88         RETURN 
     89      END IF 
    8390 
    8491      IF( kt == nit000 )   CALL trc_adv_ctl          ! initialisation & control of options 
     
    141148         WRITE(charout, FMT="('adv ')")  ;  CALL prt_ctl_trc_info(charout) 
    142149                                            CALL prt_ctl_trc( tab4d=tra, mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 
     150      END IF 
     151      ! 
     152      IF(.NOT. wrk_release(3, 1,2,3))THEN 
     153         CALL ctl_stop('trc_adv : failed to release workspace arrays.') 
    143154      END IF 
    144155      ! 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90

    r2528 r2608  
    6060      !! 
    6161      !!---------------------------------------------------------------------- 
     62      USE wrk_nemo, ONLY: wrk_use, wrk_release 
     63      USE wrk_nemo, zemps => wrk_2d_1 
    6264      !! * Arguments 
    6365      INTEGER, INTENT( in ) ::   kt          ! ocean time-step index 
     
    6668      INTEGER  ::   ji, jj, jn           ! dummy loop indices 
    6769      REAL(wp) ::   zsrau, zse3t   ! temporary scalars 
    68       REAL(wp), DIMENSION(jpi,jpj) ::   zemps  ! surface freshwater flux 
    6970      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrtrd 
    7071      CHARACTER (len=22) :: charout 
    7172      !!---------------------------------------------------------------------- 
     73 
     74      IF(.NOT. wrk_use(2, 1))THEN 
     75         CALL ctl_stop('trc_sbc: requested workspace array unavailable.') 
     76         RETURN 
     77      END IF 
    7278 
    7379      IF( kt == nit000 ) THEN 
     
    120126      ENDIF 
    121127 
     128      IF(.NOT. wrk_release(2, 1))THEN 
     129         CALL ctl_stop('trc_sbc: failed to release workspace array.') 
     130      END IF 
     131 
    122132   END SUBROUTINE trc_sbc 
    123133 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90

    r2528 r2608  
    3939 
    4040   PUBLIC trd_mld_trc 
     41   PUBLIC trd_mld_trc_alloc 
    4142   PUBLIC trd_mld_bio 
    4243   PUBLIC trd_mld_trc_init 
     
    5859   LOGICAL :: lldebug = .TRUE. 
    5960 
     61   ! Workspace array for trd_mld_trc() routine. Declared here as is 4D and 
     62   ! cannot use workspaces in wrk_nemo module. 
     63   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::  ztmltrd2   ! 
     64#if defined key_lobster 
     65   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  ztmltrdbio2  ! only needed for mean diagnostics in trd_mld_bio() 
     66#endif 
     67 
    6068   !! * Substitutions 
    6169#  include "top_substitute.h90" 
     
    6775 
    6876CONTAINS 
     77 
     78   FUNCTION trd_mld_trc_alloc 
     79      !!---------------------------------------------------------------------- 
     80      !!                  ***  ROUTINE trd_mld_trc_alloc  *** 
     81      !!---------------------------------------------------------------------- 
     82      INTEGER :: trd_mld_trc_alloc 
     83      !!---------------------------------------------------------------------- 
     84 
     85      ALLOCATE(ztmltrd2(jpi,jpj,jpltrd_trc,jptra), & 
     86#if defined key_lobster 
     87               ztmltrdbio2(jpi,jpj,jpdiabio)     , & 
     88#endif 
     89               Stat=trd_mld_trc_alloc) 
     90 
     91      IF(trd_mld_trc_alloc/=0)THEN 
     92         CALL ctl_warn('trd_mld_trc_alloc : failed to allocate arrays.') 
     93      END IF 
     94 
     95   END FUNCTION trd_mld_trc_alloc 
     96 
    6997 
    7098   SUBROUTINE trd_mld_trc_zint( ptrc_trdmld, ktrd, ctype, kjn ) 
     
    88116      !!            surface and the control surface is called "mixed-layer" 
    89117      !!---------------------------------------------------------------------- 
     118      USE wrk_nemo, ONLY: wrk_use, wrk_release 
     119      USE wrk_nemo, ONLY: zvlmsk => wrk_2d_1 
     120      !! 
    90121      INTEGER, INTENT( in ) ::   ktrd, kjn                        ! ocean trend index and passive tracer rank 
    91122      CHARACTER(len=2), INTENT( in ) ::  ctype                    ! surface/bottom (2D) or interior (3D) physics 
    92123      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) ::  ptrc_trdmld ! passive tracer trend 
    93124      INTEGER ::   ji, jj, jk, isum 
    94       REAL(wp), DIMENSION(jpi,jpj) ::  zvlmsk 
    95       !!---------------------------------------------------------------------- 
     125      !!---------------------------------------------------------------------- 
     126 
     127      IF(.NOT. wrk_use(2, 1))THEN 
     128         CALL ctl_stop('trd_mld_trc_zint : requested workspace array unavailable.') 
     129         RETURN 
     130      END IF 
    96131 
    97132      ! I. Definition of control surface and integration weights 
     
    178213      END SELECT 
    179214 
     215      IF(.NOT. wrk_release(2, 1))THEN 
     216         CALL ctl_stop('trd_mld_trc_zint : failed to release workspace array.') 
     217      END IF 
     218 
    180219    END SUBROUTINE trd_mld_trc_zint 
    181220     
     
    198237      !!            surface and the control surface is called "mixed-layer" 
    199238      !!---------------------------------------------------------------------- 
     239      USE wrk_nemo, ONLY: wrk_use, wrk_release 
     240      USE wrk_nemo, ONLY: zvlmsk => wrk_2d_1 
     241      !! 
    200242      INTEGER, INTENT( in ) ::   ktrd          ! bio trend index 
    201243      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) ::  ptrc_trdmld ! passive trc trend 
     
    203245      !! local variables 
    204246      INTEGER ::   ji, jj, jk, isum 
    205       REAL(wp), DIMENSION(jpi,jpj) ::  zvlmsk 
    206       !!---------------------------------------------------------------------- 
     247      !!---------------------------------------------------------------------- 
     248 
     249      IF(.NOT. wrk_use(2, 1))THEN 
     250         CALL ctl_stop('trd_mld_bio_zint : requested workspace array unavailable.') 
     251         RETURN 
     252      END IF 
    207253 
    208254      ! I. Definition of control surface and integration weights 
     
    286332      END DO 
    287333 
     334      IF(.NOT. wrk_release(2, 1))THEN 
     335         CALL ctl_stop('trd_mld_bio_zint : failed to release workspace array.') 
     336      END IF 
    288337#endif 
    289338 
     
    338387      !!       - See NEMO documentation (in preparation) 
    339388      !!---------------------------------------------------------------------- 
     389      USE wrk_nemo, ONLY: wrk_use, wrk_release 
     390      USE wrk_nemo, wrk_3d_1, wrk_3d_2, wrk_3d_3, wrk_3d_4, & 
     391                    wrk_3d_5, wrk_3d_6, wrk_3d_7, wrk_3d_8, & 
     392                    wrk_3d_9 
    340393      INTEGER, INTENT( in ) ::   kt                               ! ocean time-step index 
    341394      INTEGER ::   ji, jj, jk, jl, ik, it, itmod, jn 
    342395      REAL(wp) ::   zavt, zfn, zfn2 
    343396      !! 
    344       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmltot             ! d(trc)/dt over the anlysis window (incl. Asselin) 
    345       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlres             ! residual = dh/dt entrainment term 
    346       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlatf             ! for storage only 
    347       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlrad             ! for storage only (for trb<0 corr in trcrad) 
    348       !! 
    349       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmltot2            ! -+ 
    350       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlres2            !  | working arrays to diagnose the trends 
    351       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmltrdm2           !  | associated with the time meaned ML 
    352       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlatf2            !  | passive tracers 
    353       REAL(wp), DIMENSION(jpi,jpj,jptra) ::   ztmlrad2            !  | (-> for trb<0 corr in trcrad) 
    354       REAL(wp), DIMENSION(jpi,jpj,jpltrd_trc,jptra) ::  ztmltrd2  ! -+ 
     397      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmltot             ! d(trc)/dt over the anlysis window (incl. Asselin) 
     398      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlres             ! residual = dh/dt entrainment term 
     399      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlatf             ! for storage only 
     400      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlrad             ! for storage only (for trb<0 corr in trcrad) 
     401      !! 
     402      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmltot2            ! -+ 
     403      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlres2            !  | working arrays to diagnose the trends 
     404      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmltrdm2           !  | associated with the time meaned ML 
     405      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlatf2            !  | passive tracers 
     406      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmlrad2            !  | (-> for trb<0 corr in trcrad) 
     407      !REAL(wp), DIMENSION(jpi,jpj,jpltrd_trc,jptra) ::  ztmltrd2  ! -+ 
    355408      !! 
    356409      CHARACTER (LEN= 5) ::   clvar 
     
    360413#endif 
    361414      !!---------------------------------------------------------------------- 
     415 
     416      IF(.NOT. wrk_use(3, 1,2,3,4,5,6,7,8,9))THEN 
     417         CALL ctl_stop('trd_mld_trc : requested workspace arrays unavailable.') 
     418         RETURN 
     419      END IF 
     420      ! Set-up pointers into sub-arrays of workspaces 
     421      ztmltot   => wrk_3d_1(:,:,1:jptra) 
     422      ztmlres   => wrk_3d_2(:,:,1:jptra) 
     423      ztmlatf   => wrk_3d_3(:,:,1:jptra) 
     424      ztmlrad   => wrk_3d_4(:,:,1:jptra) 
     425      ztmltot2  => wrk_3d_5(:,:,1:jptra) 
     426      ztmlres2  => wrk_3d_6(:,:,1:jptra) 
     427      ztmltrdm2 => wrk_3d_7(:,:,1:jptra) 
     428      ztmlatf2  => wrk_3d_8(:,:,1:jptra) 
     429      ztmlrad2  => wrk_3d_9(:,:,1:jptra) 
     430 
    362431 
    363432      IF( nn_dttrc  /= 1  ) CALL ctl_stop( " Be careful, trends diags never validated " ) 
     
    847916      IF( lrst_trc )   CALL trd_mld_trc_rst_write( kt )  ! this must be after the array swap above (III.3) 
    848917 
     918      IF(.NOT. wrk_release(3, 1,2,3,4,5,6,7,8,9))THEN 
     919         CALL ctl_stop('trd_mld_trc : failed to release workspace arrays.') 
     920      END IF 
     921      ! 
    849922   END SUBROUTINE trd_mld_trc 
    850923 
     
    900973      INTEGER  ::  jl, it, itmod 
    901974      LOGICAL  :: llwarn  = .TRUE., lldebug = .TRUE. 
    902       REAL(wp), DIMENSION(jpi,jpj,jpdiabio) ::  ztmltrdbio2  ! only needed for mean diagnostics 
    903975      REAL(wp) :: zfn, zfn2 
    904976#if defined key_dimgout 
Note: See TracChangeset for help on using the changeset viewer.