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 3152 for branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90 – NEMO

Ignore:
Timestamp:
2011-11-18T10:19:26+01:00 (12 years ago)
Author:
smasson
Message:

dev_NEMO_MERGE_2011: new dynamical allocation in IOM and SBC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r3116 r3152  
    2020   USE geo2ocean       ! for vector rotation on to model grid 
    2121   USE lib_mpp         ! MPP library 
     22   USE wrk_nemo_2      ! work arrays 
    2223   USE ioipsl, ONLY :   ymds2ju, ju2ymds   ! for calendar 
    2324 
     
    704705      !! ** Purpose :   Vector fields may need to be rotated onto the local grid direction 
    705706      !!---------------------------------------------------------------------- 
    706       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    707       USE wrk_nemo, ONLY: utmp => wrk_2d_24, vtmp => wrk_2d_25      ! 2D workspace 
    708       !! 
    709707      INTEGER  , INTENT(in   )               ::   kt        ! ocean time step 
    710708      TYPE(FLD), INTENT(inout), DIMENSION(:) ::   sd        ! input field related variables 
    711709      !! 
    712       INTEGER                      ::   ju, jv, jk   ! loop indices 
    713       INTEGER                      ::   imf          ! size of the structure sd 
    714       INTEGER                      ::   ill          ! character length 
    715       INTEGER                      ::   iv           ! indice of V component 
    716       CHARACTER (LEN=100)          ::   clcomp       ! dummy weight name 
    717       !!--------------------------------------------------------------------- 
    718  
    719       IF(wrk_in_use(2, 24,25) ) THEN 
    720          CALL ctl_stop('fld_rot: ERROR: requested workspace arrays are unavailable.')   ;   RETURN 
    721       END IF 
     710      INTEGER                           ::   ju, jv, jk   ! loop indices 
     711      INTEGER                           ::   imf          ! size of the structure sd 
     712      INTEGER                           ::   ill          ! character length 
     713      INTEGER                           ::   iv           ! indice of V component 
     714      REAL(wp), POINTER, DIMENSION(:,:) ::   utmp, vtmp   ! temporary arrays for vector rotation 
     715      CHARACTER (LEN=100)               ::   clcomp       ! dummy weight name 
     716      !!--------------------------------------------------------------------- 
     717 
     718      CALL wrk_alloc( jpi,jpj, utmp, vtmp ) 
    722719 
    723720      !! (sga: following code should be modified so that pairs arent searched for each time 
     
    754751       END DO 
    755752      ! 
    756       IF(wrk_not_released(2, 24,25) )    CALL ctl_stop('fld_rot: ERROR: failed to release workspace arrays.') 
     753      CALL wrk_dealloc( jpi,jpj, utmp, vtmp ) 
    757754      ! 
    758755   END SUBROUTINE fld_rot 
     
    921918      !!                file, restructuring as required 
    922919      !!---------------------------------------------------------------------- 
    923       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 
    924       USE wrk_nemo, ONLY:   data_tmp =>  wrk_2d_1     ! 2D real    workspace 
    925       USE wrk_nemo, ONLY:   data_src => iwrk_2d_1     ! 2D integer workspace 
    926       !! 
    927920      TYPE( FLD ), INTENT(in) ::   sd   ! field with name of weights file 
    928921      !! 
    929       INTEGER                ::   jn            ! dummy loop indices 
    930       INTEGER                ::   inum          ! temporary logical unit 
    931       INTEGER                ::   id            ! temporary variable id 
    932       INTEGER                ::   ipk           ! temporary vertical dimension 
    933       CHARACTER (len=5)      ::   aname 
    934       INTEGER , DIMENSION(3) ::   ddims 
    935       LOGICAL                ::   cyclical 
    936       INTEGER                ::   zwrap      ! local integer 
    937       !!---------------------------------------------------------------------- 
    938       ! 
    939       IF(  wrk_in_use(2, 1)  .OR.  iwrk_in_use(2,1) ) THEN 
    940          CALL ctl_stop('fld_weight: requested workspace arrays are unavailable')   ;   RETURN 
    941       ENDIF 
     922      INTEGER                           ::   jn            ! dummy loop indices 
     923      INTEGER                           ::   inum          ! temporary logical unit 
     924      INTEGER                           ::   id            ! temporary variable id 
     925      INTEGER                           ::   ipk           ! temporary vertical dimension 
     926      CHARACTER (len=5)                 ::   aname 
     927      INTEGER , DIMENSION(3)            ::   ddims 
     928      INTEGER , POINTER, DIMENSION(:,:) ::   data_src 
     929      REAL(wp), POINTER, DIMENSION(:,:) ::   data_tmp 
     930      LOGICAL                           ::   cyclical 
     931      INTEGER                           ::   zwrap      ! local integer 
     932      !!---------------------------------------------------------------------- 
     933      ! 
     934      CALL wrk_alloc( jpi,jpj, data_src )   ! integer 
     935      CALL wrk_alloc( jpi,jpj, data_tmp ) 
    942936      ! 
    943937      IF( nxt_wgt > tot_wgts ) THEN 
     
    10511045      ENDIF 
    10521046 
    1053       IF(  wrk_not_released(2, 1) .OR.    & 
    1054           iwrk_not_released(2, 1)  )   CALL ctl_stop('fld_weight: failed to release workspace arrays') 
     1047      CALL wrk_dealloc( jpi,jpj, data_src )   ! integer 
     1048      CALL wrk_dealloc( jpi,jpj, data_tmp ) 
    10551049      ! 
    10561050   END SUBROUTINE fld_weight 
Note: See TracChangeset for help on using the changeset viewer.