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/TOP_SRC/PISCES/p4zrem.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/TOP_SRC/PISCES/p4zrem.F90

    r2528 r2715  
    2929   PUBLIC   p4z_rem         ! called in p4zbio.F90 
    3030   PUBLIC   p4z_rem_init    ! called in trcsms_pisces.F90 
    31  
    32    !! * Shared module variables 
     31   PUBLIC   p4z_rem_alloc 
     32 
    3333   REAL(wp), PUBLIC ::   & 
    3434     xremik  = 0.3_wp      ,  & !: 
     
    3939     oxymin  = 1.e-6_wp         !: 
    4040 
    41    REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::    & !: 
    42      &                   denitr                     !: denitrification array 
     41   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   denitr   !: denitrification array 
    4342 
    4443 
     
    4847   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    4948   !! $Id$  
    50    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    51    !!---------------------------------------------------------------------- 
    52  
     49   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     50   !!---------------------------------------------------------------------- 
    5351CONTAINS 
    5452 
     
    6159      !! ** Method  : - ??? 
    6260      !!--------------------------------------------------------------------- 
     61      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     62      USE wrk_nemo, ONLY:   ztempbac => wrk_2d_1 
     63      USE wrk_nemo, ONLY:   zdepbac  => wrk_3d_2 , zfesatur => wrk_3d_2 , zolimi => wrk_3d_4 
     64      ! 
    6365      INTEGER, INTENT(in) ::   kt ! ocean time step 
     66      ! 
    6467      INTEGER  ::   ji, jj, jk 
    6568      REAL(wp) ::   zremip, zremik , zlam1b 
     
    7275#endif 
    7376      REAL(wp) ::   zlamfac, zonitr, zstep 
    74       REAL(wp), DIMENSION(jpi,jpj)     ::   ztempbac 
    75       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdepbac, zfesatur, zolimi 
    7677      CHARACTER (len=25) :: charout 
    77  
    7878      !!--------------------------------------------------------------------- 
    7979 
     80      IF(  wrk_in_use(2, 1)  .OR.  wrk_in_use(3, 2,3,4)  ) THEN 
     81         CALL ctl_stop('p4z_rem: requested workspace arrays unavailable')   ;   RETURN 
     82      ENDIF 
    8083 
    8184       ! Initialisation of temprary arrys 
    82        zdepbac (:,:,:) = 0.0 
    83        zfesatur(:,:,:) = 0.0 
    84        zolimi  (:,:,:) = 0.0 
    85        ztempbac(:,:)   = 0.0 
     85       zdepbac (:,:,:) = 0._wp 
     86       zfesatur(:,:,:) = 0._wp 
     87       zolimi  (:,:,:) = 0._wp 
     88       ztempbac(:,:)   = 0._wp 
    8689 
    8790      !  Computation of the mean phytoplankton concentration as 
    8891      !  a crude estimate of the bacterial biomass 
    8992      !   -------------------------------------------------- 
    90  
    9193      DO jk = 1, jpkm1 
    9294         DO jj = 1, jpj 
     
    362364               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 
    363365#endif 
    364  
    365             END DO 
    366          END DO 
    367       END DO 
    368       ! 
    369  
    370        IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     366            END DO 
     367         END DO 
     368      END DO 
     369      ! 
     370 
     371      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    371372         WRITE(charout, FMT="('rem5')") 
    372373         CALL prt_ctl_trc_info(charout) 
    373374         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    374        ENDIF 
    375  
    376        !     Update the arrays TRA which contain the biological sources and sinks 
    377        !     -------------------------------------------------------------------- 
     375      ENDIF 
     376 
     377      !     Update the arrays TRA which contain the biological sources and sinks 
     378      !     -------------------------------------------------------------------- 
    378379 
    379380      DO jk = 1, jpkm1 
     
    385386         tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi(:,:,jk) + denitr(:,:,jk) 
    386387         tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + denitr(:,:,jk) * rno3 * rdenit 
    387      END DO 
    388  
    389        IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     388      END DO 
     389 
     390      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    390391         WRITE(charout, FMT="('rem6')") 
    391392         CALL prt_ctl_trc_info(charout) 
    392393         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    393        ENDIF 
    394  
     394      ENDIF 
     395      ! 
     396      IF(  wrk_not_released(2, 1)     .OR.   & 
     397           wrk_not_released(3, 2,3,4)  )   CALL ctl_stop('p4z_rem: failed to release workspace arrays') 
     398      ! 
    395399   END SUBROUTINE p4z_rem 
    396400 
     401 
    397402   SUBROUTINE p4z_rem_init 
    398  
    399403      !!---------------------------------------------------------------------- 
    400404      !!                  ***  ROUTINE p4z_rem_init  *** 
     
    408412      !! 
    409413      !!---------------------------------------------------------------------- 
    410  
    411414      NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xlam1, oxymin 
     415      !!---------------------------------------------------------------------- 
    412416 
    413417      REWIND( numnat )                     ! read numnat 
     
    425429         WRITE(numout,*) '    halk saturation constant for anoxia       oxymin    =', oxymin 
    426430      ENDIF 
    427  
    428       nitrfac(:,:,:) = 0.0 
    429       denitr (:,:,:) = 0. 
    430  
     431      ! 
     432      nitrfac(:,:,:) = 0._wp 
     433      denitr (:,:,:) = 0._wp 
     434      ! 
    431435   END SUBROUTINE p4z_rem_init 
     436 
     437 
     438   INTEGER FUNCTION p4z_rem_alloc() 
     439      !!---------------------------------------------------------------------- 
     440      !!                     ***  ROUTINE p4z_rem_alloc  *** 
     441      !!---------------------------------------------------------------------- 
     442      ALLOCATE( denitr(jpi,jpj,jpk), STAT=p4z_rem_alloc ) 
     443      ! 
     444      IF( p4z_rem_alloc /= 0 )   CALL ctl_warn('p4z_rem_alloc: failed to allocate arrays') 
     445      ! 
     446   END FUNCTION p4z_rem_alloc 
    432447 
    433448#else 
Note: See TracChangeset for help on using the changeset viewer.