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/sbcice_cice.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/sbcice_cice.F90

    r3116 r3152  
    1818   USE lib_mpp         ! distributed memory computing library 
    1919   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     20   USE wrk_nemo_2      ! work arrays 
    2021   USE daymod          ! calendar 
    2122   USE fldread         ! read input fields 
     
    178179     CALL lbc_lnk ( fr_iv , 'V', 1. ) 
    179180 
    180  
    181181   END SUBROUTINE cice_sbc_init 
    182182 
     183    
    183184   SUBROUTINE cice_sbc_in (kt, nsbc) 
    184185      !!--------------------------------------------------------------------- 
    185186      !!                    ***  ROUTINE cice_sbc_in  *** 
    186187      !! ** Purpose: Set coupling fields and pass to CICE 
    187       !! 
    188       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    189       USE wrk_nemo, ONLY:   wrk_2d_1, wrk_3d_1                    ! Workspace 
    190       !! 
    191       INTEGER, INTENT( in  ) ::   kt   ! ocean time step 
    192       INTEGER, INTENT( in  ) ::   nsbc ! surface forcing type 
    193       !!--------------------------------------------------------------------- 
    194      INTEGER  ::   ji, jj, jpl                   ! dummy loop indices 
    195  
    196      REAL(wp), DIMENSION(:,:), POINTER :: ztmp 
    197      REAL(wp), DIMENSION(:,:,:), POINTER :: ztmpn 
    198  
    199      IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 1)  ) THEN 
    200         CALL ctl_stop('cice_sbc_in: requested workspace arrays are unavailable')   ;   RETURN 
    201      ENDIF 
    202      ztmp => wrk_2d_1(:,:) 
    203      ztmpn => wrk_3d_1(:,:,1:ncat) 
     188      !!--------------------------------------------------------------------- 
     189      INTEGER, INTENT(in   ) ::   kt   ! ocean time step 
     190      INTEGER, INTENT(in   ) ::   nsbc ! surface forcing type 
     191 
     192      INTEGER  ::   ji, jj, jpl                   ! dummy loop indices       
     193      REAL(wp), DIMENSION(:,:), POINTER :: ztmp 
     194      REAL(wp), DIMENSION(:,:,:), POINTER :: ztmpn 
     195      !!--------------------------------------------------------------------- 
     196 
     197      CALL wrk_alloc( jpi,jpj, ztmp ) 
     198      CALL wrk_alloc( jpi,jpj,ncat, ztmpn ) 
    204199 
    205200     IF( kt == nit000 )  THEN 
     
    368363     CALL nemo2cice(ztmp,vocn,'F', -1. ) 
    369364 
    370      IF( wrk_not_released(2, 1) .OR. wrk_not_released(3, 1)  )   CALL ctl_stop('cice_sbc_in: failed to release workspace arrays') 
     365      CALL wrk_dealloc( jpi,jpj, ztmp ) 
     366      CALL wrk_dealloc( jpi,jpj,ncat, ztmpn ) 
    371367     ! 
    372368   END SUBROUTINE cice_sbc_in 
    373369 
     370 
    374371   SUBROUTINE cice_sbc_out (kt,nsbc) 
    375372      !!--------------------------------------------------------------------- 
    376373      !!                    ***  ROUTINE cice_sbc_out  *** 
    377374      !! ** Purpose: Get fields from CICE and set surface fields for NEMO 
    378       !! 
    379       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    380       USE wrk_nemo, ONLY:   wrk_2d_1                         ! 2D workspace 
    381       !! 
     375      !!--------------------------------------------------------------------- 
    382376      INTEGER, INTENT( in  ) ::   kt   ! ocean time step 
    383377      INTEGER, INTENT( in  ) ::   nsbc ! surface forcing type 
    384       !!--------------------------------------------------------------------- 
    385  
    386      INTEGER  ::   ji, jj, jpl                 ! dummy loop indices 
    387  
    388      REAL(wp), DIMENSION(:,:), POINTER :: ztmp 
    389  
    390      IF( kt == nit000 )  THEN 
     378       
     379      INTEGER  ::   ji, jj, jpl                 ! dummy loop indices 
     380      REAL(wp), DIMENSION(:,:), POINTER :: ztmp 
     381      !!--------------------------------------------------------------------- 
     382 
     383      CALL wrk_alloc( jpi,jpj, ztmp ) 
     384       
     385      IF( kt == nit000 )  THEN 
    391386         IF(lwp) WRITE(numout,*)'cice_sbc_out' 
    392      ENDIF 
    393  
    394      IF( wrk_in_use(2, 1) ) THEN 
    395         CALL ctl_stop('cice_sbc_out: requested workspace arrays are unavailable')   ;   RETURN 
    396      ENDIF 
    397      ztmp => wrk_2d_1(:,:) 
    398  
     387      ENDIF 
     388       
    399389! x comp of ocean-ice stress  
    400390     CALL cice2nemo(strocnx,ztmp,'F', -1. ) 
     
    532522! Release work space 
    533523 
    534      IF( wrk_not_released(2, 1) )   CALL ctl_stop('cice_sbc_out: failed to release workspace arrays') 
     524      CALL wrk_dealloc( jpi,jpj, ztmp ) 
    535525     ! 
    536526   END SUBROUTINE cice_sbc_out 
     527 
    537528 
    538529#if defined key_oasis3 || defined key_oasis4 
Note: See TracChangeset for help on using the changeset viewer.