Changeset 2774


Ignore:
Timestamp:
2011-06-01T15:13:02+02:00 (10 years ago)
Author:
cetlod
Message:

PISCES trunk : Use dynamical allocation for some local arrays, see ticket #830

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zsed.F90

    r2715 r2774  
    370370      !! 
    371371      !!---------------------------------------------------------------------- 
    372  
     372      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
     373      USE wrk_nemo, ONLY: zriverdoc => wrk_2d_1, zriver => wrk_2d_2, zndepo => wrk_2d_3 
     374      USE wrk_nemo, ONLY: zcmask => wrk_3d_2 
     375      ! 
    373376      INTEGER :: ji, jj, jk, jm 
    374377      INTEGER :: numriv, numbath, numdep 
    375  
    376  
    377378      REAL(wp) ::   zcoef 
    378379      REAL(wp) ::   expide, denitide,zmaskt 
    379       REAL(wp) , DIMENSION (jpi,jpj)     ::   riverdoc, river, ndepo 
    380       REAL(wp) , DIMENSION (jpi,jpj,jpk) ::   cmask 
    381  
     380      ! 
    382381      NAMELIST/nampissed/ ln_dustfer, ln_river, ln_ndepo, ln_sedinput, sedfeinput, dustsolub 
    383  
    384  
     382      !!---------------------------------------------------------------------- 
     383 
     384      IF( ( wrk_in_use(2, 1,2,3) ) .OR. ( wrk_in_use(3, 2) ) ) THEN 
     385         CALL ctl_stop('p4z_sed_init: requested workspace arrays unavailable')  ;  RETURN 
     386      END IF 
     387      ! 
    385388      REWIND( numnat )                     ! read numnat 
    386389      READ  ( numnat, nampissed ) 
     
    419422         IF(lwp) WRITE(numout,*) '    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    420423         CALL iom_open ( 'river.orca.nc', numriv ) 
    421          CALL iom_get  ( numriv, jpdom_data, 'riverdic', river   (:,:), jpyr ) 
    422          CALL iom_get  ( numriv, jpdom_data, 'riverdoc', riverdoc(:,:), jpyr ) 
     424         CALL iom_get  ( numriv, jpdom_data, 'riverdic', zriver   (:,:), jpyr ) 
     425         CALL iom_get  ( numriv, jpdom_data, 'riverdoc', zriverdoc(:,:), jpyr ) 
    423426         CALL iom_close( numriv ) 
    424427      ELSE 
    425          river   (:,:) = 0.e0 
    426          riverdoc(:,:) = 0.e0 
     428         zriver   (:,:) = 0.e0 
     429         zriverdoc(:,:) = 0.e0 
    427430      endif 
    428431 
     
    433436         IF(lwp) WRITE(numout,*) '    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    434437         CALL iom_open ( 'ndeposition.orca.nc', numdep ) 
    435          CALL iom_get  ( numdep, jpdom_data, 'ndep', ndepo(:,:), jpyr ) 
     438         CALL iom_get  ( numdep, jpdom_data, 'ndep', zndepo(:,:), jpyr ) 
    436439         CALL iom_close( numdep ) 
    437440      ELSE 
    438          ndepo(:,:) = 0.e0 
     441         zndepo(:,:) = 0.e0 
    439442      ENDIF 
    440443 
     
    446449         IF(lwp) WRITE(numout,*) '       from bathy.orca.nc file ' 
    447450         CALL iom_open ( 'bathy.orca.nc', numbath ) 
    448          CALL iom_get  ( numbath, jpdom_data, 'bathy', cmask(:,:,:), jpyr ) 
     451         CALL iom_get  ( numbath, jpdom_data, 'bathy', zcmask(:,:,:), jpyr ) 
    449452         CALL iom_close( numbath ) 
    450453         ! 
     
    455458                     zmaskt = tmask(ji+1,jj,jk) * tmask(ji-1,jj,jk) * tmask(ji,jj+1,jk)    & 
    456459                        &                       * tmask(ji,jj-1,jk) * tmask(ji,jj,jk+1) 
    457                      IF( zmaskt == 0. )   cmask(ji,jj,jk ) = MAX( 0.1, cmask(ji,jj,jk) )  
     460                     IF( zmaskt == 0. )   zcmask(ji,jj,jk ) = MAX( 0.1, zcmask(ji,jj,jk) )  
    458461                  ENDIF 
    459462               END DO 
     
    465468                  expide   = MIN( 8.,( fsdept(ji,jj,jk) / 500. )**(-1.5) ) 
    466469                  denitide = -0.9543 + 0.7662 * LOG( expide ) - 0.235 * LOG( expide )**2 
    467                   cmask(ji,jj,jk) = cmask(ji,jj,jk) * MIN( 1., EXP( denitide ) / 0.5 ) 
     470                  zcmask(ji,jj,jk) = zcmask(ji,jj,jk) * MIN( 1., EXP( denitide ) / 0.5 ) 
    468471               END DO 
    469472            END DO 
    470473         END DO 
    471474      ELSE 
    472          cmask(:,:,:) = 0.e0 
     475         zcmask(:,:,:) = 0.e0 
    473476      ENDIF 
    474477 
    475       CALL lbc_lnk( cmask , 'T', 1. )      ! Lateral boundary conditions on cmask   (sign unchanged) 
     478      CALL lbc_lnk( zcmask , 'T', 1. )      ! Lateral boundary conditions on zcmask   (sign unchanged) 
    476479 
    477480 
     
    496499         DO ji = 1, jpi 
    497500            zcoef = ryyss * e1e2t(ji,jj)  * fse3t(ji,jj,1) * tmask(ji,jj,1)  
    498             cotdep(ji,jj) =  river(ji,jj)                  *1E9 / ( 12. * zcoef + rtrn ) 
    499             rivinp(ji,jj) = (river(ji,jj)+riverdoc(ji,jj)) *1E9 / ( 31.6* zcoef + rtrn ) 
    500             nitdep(ji,jj) = 7.6 * ndepo(ji,jj)                  / ( 14E6*ryyss*fse3t(ji,jj,1) + rtrn ) 
     501            cotdep(ji,jj) =  zriver(ji,jj)                  *1E9 / ( 12. * zcoef + rtrn ) 
     502            rivinp(ji,jj) = (zriver(ji,jj)+zriverdoc(ji,jj)) *1E9 / ( 31.6* zcoef + rtrn ) 
     503            nitdep(ji,jj) = 7.6 * zndepo(ji,jj)                  / ( 14E6*ryyss*fse3t(ji,jj,1) + rtrn ) 
    501504         END DO 
    502505      END DO 
     
    512515      ! ------------------------- 
    513516      DO jk = 1, jpkm1 
    514          ironsed(:,:,jk) = sedfeinput * cmask(:,:,jk) / ( fse3t(:,:,jk) * rday ) 
     517         ironsed(:,:,jk) = sedfeinput * zcmask(:,:,jk) / ( fse3t(:,:,jk) * rday ) 
    515518      END DO 
    516519      CALL lbc_lnk( ironsed , 'T', 1. )      ! Lateral boundary conditions on ( ironsed )   (sign unchanged) 
    517520 
     521      IF( ( wrk_not_released(2, 1,2,3) ) .OR. ( wrk_not_released(3, 2) ) )   & 
     522        &         CALL ctl_stop('p4z_sed_init: failed to release workspace arrays') 
    518523 
    519524   END SUBROUTINE p4z_sed_init 
Note: See TracChangeset for help on using the changeset viewer.