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 3294 for trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90 – NEMO

Ignore:
Timestamp:
2012-01-28T17:44:18+01:00 (12 years ago)
Author:
rblod
Message:

Merge of 3.4beta into the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90

    r2777 r3294  
    2727   USE in_out_manager  ! I/O manager 
    2828   USE lib_mpp         ! distribued memory computing library 
     29   USE wrk_nemo        ! work arrays 
     30   USE timing          ! Timing 
    2931   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3032 
     
    207209      !!  ** Nota    :   sf has to be a dummy argument for AGRIF on NEC 
    208210      !!---------------------------------------------------------------------- 
    209       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    210       USE wrk_nemo, ONLY: zqlw => wrk_2d_1  ! long-wave heat flux over ocean 
    211       USE wrk_nemo, ONLY: zqla => wrk_2d_2  ! latent heat flux over ocean 
    212       USE wrk_nemo, ONLY: zqsb => wrk_2d_3  ! sensible heat flux over ocean 
    213       !! 
    214211      TYPE(fld), INTENT(in), DIMENSION(:)       ::   sf    ! input data 
    215212      REAL(wp) , INTENT(in), DIMENSION(jpi,jpj) ::   pst   ! surface temperature                      [Celcius] 
     
    227224      REAL(wp) ::   zrhoa, zev, zes, zeso, zqatm, zevsqr        !    -         - 
    228225      REAL(wp) ::   ztx2, zty2                                  !    -         - 
     226      REAL(wp), POINTER, DIMENSION(:,:) ::   zqlw        ! long-wave heat flux over ocean 
     227      REAL(wp), POINTER, DIMENSION(:,:) ::   zqla        ! latent heat flux over ocean 
     228      REAL(wp), POINTER, DIMENSION(:,:) ::   zqsb        ! sensible heat flux over ocean 
    229229      !!--------------------------------------------------------------------- 
    230  
    231       IF( wrk_in_use(3, 1,2,3) ) THEN 
    232          CALL ctl_stop('blk_oce_clio: requested workspace arrays are unavailable')   ;   RETURN 
    233       ENDIF 
     230      ! 
     231      IF( nn_timing == 1 )  CALL timing_start('blk_oce_clio') 
     232      ! 
     233      CALL wrk_alloc( jpi,jpj, zqlw, zqla, zqsb ) 
    234234 
    235235      zpatm = 101000._wp      ! atmospheric pressure  (assumed constant here) 
     
    382382      ENDIF 
    383383 
    384       IF( wrk_not_released(3, 1,2,3) )   CALL ctl_stop('blk_oce_clio: failed to release workspace arrays') 
     384      CALL wrk_dealloc( jpi,jpj, zqlw, zqla, zqsb ) 
     385      ! 
     386      IF( nn_timing == 1 )  CALL timing_stop('blk_oce_clio') 
    385387      ! 
    386388   END SUBROUTINE blk_oce_clio 
     
    414416      !! 
    415417      !!---------------------------------------------------------------------- 
    416       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    417       USE wrk_nemo, ONLY:   ztatm  => wrk_2d_1   ! Tair in Kelvin 
    418       USE wrk_nemo, ONLY:   zqatm  => wrk_2d_2   ! specific humidity 
    419       USE wrk_nemo, ONLY:   zevsqr => wrk_2d_3   ! vapour pressure square-root 
    420       USE wrk_nemo, ONLY:   zrhoa  => wrk_2d_4   ! air density 
    421       USE wrk_nemo, ONLY:   wrk_3d_1 , wrk_3d_2 
    422       !! 
    423418      REAL(wp), INTENT(in   ), DIMENSION(:,:,:)   ::   pst      ! ice surface temperature                   [Kelvin] 
    424419      REAL(wp), INTENT(in   ), DIMENSION(:,:,:)   ::   palb_cs  ! ice albedo (clear    sky) (alb_ice_cs)         [%] 
     
    448443      REAL(wp) ::   ztice3, zticemb, zticemb2, zdqlw, zdqsb     !    -         - 
    449444      !! 
     445      REAL(wp), DIMENSION(:,:)  , POINTER ::   ztatm   ! Tair in Kelvin 
     446      REAL(wp), DIMENSION(:,:)  , POINTER ::   zqatm   ! specific humidity 
     447      REAL(wp), DIMENSION(:,:)  , POINTER ::   zevsqr  ! vapour pressure square-root 
     448      REAL(wp), DIMENSION(:,:)  , POINTER ::   zrhoa   ! air density 
    450449      REAL(wp), DIMENSION(:,:,:), POINTER ::   z_qlw, z_qsb 
    451450      !!--------------------------------------------------------------------- 
    452  
    453       IF(  wrk_in_use(2, 1,2,3,4)  .OR.  wrk_in_use(3, 1,2)  ) THEN 
    454          CALL ctl_stop('blk_ice_clio: requested workspace arrays are unavailable')   ;   RETURN 
    455       ELSE IF(pdim > jpk)THEN 
    456          CALL ctl_stop('blk_ice_clio: too many ice levels to use wrk_nemo 3D workspaces.') 
    457          RETURN 
    458       END IF 
    459       z_qlw => wrk_3d_1(:,:,1:pdim) 
    460       z_qsb => wrk_3d_2(:,:,1:pdim) 
     451      ! 
     452      IF( nn_timing == 1 )  CALL timing_start('blk_ice_clio') 
     453      ! 
     454      CALL wrk_alloc( jpi,jpj, ztatm, zqatm, zevsqr, zrhoa ) 
     455      CALL wrk_alloc( jpi,jpj,pdim, z_qlw, z_qsb ) 
    461456 
    462457      ijpl  = pdim                           ! number of ice categories 
     
    634629      ENDIF 
    635630 
    636       IF( wrk_not_released(2, 1,2,3,4)  .OR.   & 
    637           wrk_not_released(3, 1,2)      )   CALL ctl_stop('blk_ice_clio: failed to release workspace arrays') 
     631      CALL wrk_dealloc( jpi,jpj, ztatm, zqatm, zevsqr, zrhoa ) 
     632      CALL wrk_dealloc( jpi,jpj,pdim, z_qlw, z_qsb ) 
     633      ! 
     634      IF( nn_timing == 1 )  CALL timing_stop('blk_ice_clio') 
    638635      ! 
    639636   END SUBROUTINE blk_ice_clio 
     
    650647      !!               - also initialise sbudyko and stauc once for all  
    651648      !!---------------------------------------------------------------------- 
    652       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    653       USE wrk_nemo, ONLY:   zev   => wrk_2d_1                  ! vapour pressure 
    654       USE wrk_nemo, ONLY:   zdlha => wrk_2d_2 , zlsrise => wrk_2d_3 , zlsset => wrk_2d_4  
    655       USE wrk_nemo, ONLY:   zps   => wrk_2d_5 , zpc     => wrk_2d_6   ! sin/cos of latitude per sin/cos of solar declination  
    656       !! 
    657649      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj)     ::   pqsr_oce    ! shortwave radiation  over the ocean 
    658650      !! 
     
    673665      REAL(wp) ::   zxday, zdist, zcoef, zcoef1      ! 
    674666      REAL(wp) ::   zes 
     667       
     668      REAL(wp), DIMENSION(:,:), POINTER ::   zev          ! vapour pressure 
     669      REAL(wp), DIMENSION(:,:), POINTER ::   zdlha, zlsrise, zlsset     ! 2D workspace 
     670      REAL(wp), DIMENSION(:,:), POINTER ::   zps, zpc   ! sine (cosine) of latitude per sine (cosine) of solar declination  
    675671      !!--------------------------------------------------------------------- 
    676  
    677       IF( wrk_in_use(2, 1,2,3,4,5,6) ) THEN 
    678          CALL ctl_stop('blk_clio_qsr_oce: requested workspace arrays unavailable')   ;   RETURN 
    679       END IF 
     672      ! 
     673      IF( nn_timing == 1 )  CALL timing_start('blk_clio_qsr_oce') 
     674      ! 
     675      CALL wrk_alloc( jpi,jpj, zev, zdlha, zlsrise, zlsset, zps, zpc ) 
    680676 
    681677      IF( lbulk_init ) THEN             !   Initilization at first time step only 
     
    791787      END DO 
    792788 
    793       IF( wrk_not_released(2, 1,2,3,4,5,6) )   CALL ctl_stop('blk_clio_qsr_oce: failed to release workspace arrays') 
     789      CALL wrk_dealloc( jpi,jpj, zev, zdlha, zlsrise, zlsset, zps, zpc ) 
     790      ! 
     791      IF( nn_timing == 1 )  CALL timing_stop('blk_clio_qsr_oce') 
    794792      ! 
    795793   END SUBROUTINE blk_clio_qsr_oce 
     
    806804      !!               - also initialise sbudyko and stauc once for all  
    807805      !!---------------------------------------------------------------------- 
    808       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    809       USE wrk_nemo, ONLY:   zev     => wrk_2d_1     ! vapour pressure 
    810       USE wrk_nemo, ONLY:   zdlha   => wrk_2d_2     ! 2D workspace 
    811       USE wrk_nemo, ONLY:   zlsrise => wrk_2d_3     ! 2D workspace 
    812       USE wrk_nemo, ONLY:   zlsset  => wrk_2d_4     ! 2D workspace 
    813       USE wrk_nemo, ONLY:   zps     => wrk_2d_5 , zpc => wrk_2d_6   ! sin/cos of latitude per sin/cos of solar declination  
    814       !! 
    815806      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pa_ice_cs   ! albedo of ice under clear sky 
    816807      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pa_ice_os   ! albedo of ice under overcast sky 
     
    830821      REAL(wp) ::   zxday, zdist, zcoef, zcoef1   !    -         - 
    831822      REAL(wp) ::   zqsr_ice_cs, zqsr_ice_os      !    -         - 
     823 
     824      REAL(wp), DIMENSION(:,:), POINTER ::   zev                      ! vapour pressure 
     825      REAL(wp), DIMENSION(:,:), POINTER ::   zdlha, zlsrise, zlsset   ! 2D workspace 
     826      REAL(wp), DIMENSION(:,:), POINTER ::   zps, zpc   ! sine (cosine) of latitude per sine (cosine) of solar declination  
    832827      !!--------------------------------------------------------------------- 
    833  
    834       IF( wrk_in_use(2, 1,2,3,4,5,6) ) THEN 
    835          CALL ctl_stop('blk_clio_qsr_ice: requested workspace arrays unavailable')   ;   RETURN 
    836       ENDIF 
     828      ! 
     829      IF( nn_timing == 1 )  CALL timing_start('blk_clio_qsr_ice') 
     830      ! 
     831      CALL wrk_alloc( jpi,jpj, zev, zdlha, zlsrise, zlsset, zps, zpc ) 
    837832 
    838833      ijpl = SIZE(pqsr_ice, 3 )      ! number of ice categories 
     
    937932      END DO 
    938933      ! 
    939       IF( wrk_not_released(2, 1,2,3,4,5,6) )   CALL ctl_stop('blk_clio_qsr_ice: failed to release workspace arrays') 
     934      CALL wrk_dealloc( jpi,jpj, zev, zdlha, zlsrise, zlsset, zps, zpc ) 
     935      ! 
     936      IF( nn_timing == 1 )  CALL timing_stop('blk_clio_qsr_ice') 
    940937      ! 
    941938   END SUBROUTINE blk_clio_qsr_ice 
Note: See TracChangeset for help on using the changeset viewer.