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

    r3116 r3152  
    4747   USE iom             ! NetCDF library 
    4848   USE lib_mpp         ! distribued memory computing library 
     49   USE wrk_nemo_2      ! work arrays 
    4950   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    5051#if defined key_cpl_carbon_cycle 
     
    217218      !!              * initialise the OASIS coupler 
    218219      !!---------------------------------------------------------------------- 
    219       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    220       USE wrk_nemo, ONLY:   zacs => wrk_2d_3 , zaos => wrk_2d_4   ! clear & overcast sky albedos 
    221       !! 
    222220      INTEGER, INTENT(in) ::   k_ice    ! ice management in the sbc (=0/1/2/3) 
    223221      !! 
    224222      INTEGER ::   jn   ! dummy loop index 
     223      REAL(wp), POINTER, DIMENSION(:,:) ::   zacs, zaos 
    225224      !! 
    226225      NAMELIST/namsbc_cpl/  sn_snd_temp, sn_snd_alb   , sn_snd_thick, sn_snd_crt   , sn_snd_co2,   & 
     
    229228      !!--------------------------------------------------------------------- 
    230229 
    231       IF( wrk_in_use(2, 3,4) ) THEN 
    232          CALL ctl_stop('sbc_cpl_init: requested workspace arrays unavailable')   ;   RETURN 
    233       ENDIF 
     230      CALL wrk_alloc( jpi,jpj, zacs, zaos ) 
    234231 
    235232      ! ================================ ! 
     
    618615         &   CALL ctl_stop( 'sbc_cpl_init: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' ) 
    619616 
    620       IF( wrk_not_released(2, 3,4) )   CALL ctl_stop('sbc_cpl_init: failed to release workspace arrays') 
     617      CALL wrk_dealloc( jpi,jpj, zacs, zaos ) 
    621618      ! 
    622619   END SUBROUTINE sbc_cpl_init 
     
    665662      !!                        emp = emps   evap. - precip. (- runoffs) (- calving) ('ocean only case) 
    666663      !!---------------------------------------------------------------------- 
    667       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    668       USE wrk_nemo, ONLY:   ztx => wrk_2d_1 , zty => wrk_2d_2 
    669       !! 
    670664      INTEGER, INTENT(in) ::   kt       ! ocean model time step index 
    671665      INTEGER, INTENT(in) ::   k_fsbc   ! frequency of sbc (-> ice model) computation  
     
    680674      REAL(wp) ::   zcdrag = 1.5e-3        ! drag coefficient 
    681675      REAL(wp) ::   zzx, zzy               ! temporary variables 
    682       !!---------------------------------------------------------------------- 
    683  
    684       IF( wrk_in_use(2, 1,2) ) THEN 
    685          CALL ctl_stop('sbc_cpl_rcv: requested workspace arrays unavailable')   ;   RETURN 
    686       ENDIF 
     676      REAL(wp), POINTER, DIMENSION(:,:) ::   ztx, zty  
     677      !!---------------------------------------------------------------------- 
     678 
     679      CALL wrk_alloc( jpi,jpj, ztx, zty ) 
    687680 
    688681      IF( kt == nit000 )   CALL sbc_cpl_init( k_ice )          ! initialisation 
     
    867860      ENDIF 
    868861      ! 
    869       IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('sbc_cpl_rcv: failed to release workspace arrays') 
     862      CALL wrk_dealloc( jpi,jpj, ztx, zty ) 
    870863      ! 
    871864   END SUBROUTINE sbc_cpl_rcv 
     
    905898      !! ** Action  :   return ptau_i, ptau_j, the stress over the ice at cp_ice_msh point 
    906899      !!---------------------------------------------------------------------- 
    907       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    908       USE wrk_nemo, ONLY:   ztx => wrk_2d_1 , zty => wrk_2d_2 
    909       !! 
    910900      REAL(wp), INTENT(out), DIMENSION(:,:) ::   p_taui   ! i- & j-components of atmos-ice stress [N/m2] 
    911901      REAL(wp), INTENT(out), DIMENSION(:,:) ::   p_tauj   ! at I-point (B-grid) or U & V-point (C-grid) 
     
    913903      INTEGER ::   ji, jj                          ! dummy loop indices 
    914904      INTEGER ::   itx                             ! index of taux over ice 
    915       !!---------------------------------------------------------------------- 
    916  
    917       IF( wrk_in_use(2, 1,2) ) THEN 
    918          CALL ctl_stop('sbc_cpl_ice_tau: requested workspace arrays unavailable')   ;   RETURN 
    919       ENDIF 
     905      REAL(wp), POINTER, DIMENSION(:,:) ::   ztx, zty  
     906      !!---------------------------------------------------------------------- 
     907       
     908      CALL wrk_alloc( jpi,jpj, ztx, zty ) 
    920909 
    921910      IF( srcv(jpr_itx1)%laction ) THEN   ;   itx =  jpr_itx1    
     
    10791068      ENDIF 
    10801069      !    
    1081       IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('sbc_cpl_ice_tau: failed to release workspace arrays') 
     1070      CALL wrk_dealloc( jpi,jpj, ztx, zty ) 
    10821071      ! 
    10831072   END SUBROUTINE sbc_cpl_ice_tau 
     
    11241113      !!                   sprecip             solid precipitation over the ocean   
    11251114      !!---------------------------------------------------------------------- 
    1126       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    1127       USE wrk_nemo, ONLY:   zcptn  => wrk_2d_2   ! rcp * tsn(:,:,1,jp_tem) 
    1128       USE wrk_nemo, ONLY:   ztmp   => wrk_2d_3   ! temporary array 
    1129       USE wrk_nemo, ONLY:   zicefr => wrk_2d_4   ! ice fraction  
    1130       !! 
    11311115      REAL(wp), INTENT(in   ), DIMENSION(:,:)   ::   p_frld     ! lead fraction                [0 to 1] 
    11321116      ! optional arguments, used only in 'mixed oce-ice' case 
     
    11361120      ! 
    11371121      INTEGER ::   jl   ! dummy loop index 
    1138       !!---------------------------------------------------------------------- 
    1139  
    1140       IF( wrk_in_use(2, 2,3,4) ) THEN 
    1141          CALL ctl_stop('sbc_cpl_ice_flx: requested workspace arrays unavailable')   ;   RETURN 
    1142       ENDIF 
     1122      REAL(wp), POINTER, DIMENSION(:,:) ::   zcptn, ztmp, zicefr 
     1123      !!---------------------------------------------------------------------- 
     1124 
     1125      CALL wrk_alloc( jpi,jpj, zcptn, ztmp, zicefr ) 
    11431126 
    11441127      zicefr(:,:) = 1.- p_frld(:,:) 
     
    13161299      END SELECT 
    13171300 
    1318       IF( wrk_not_released(2, 2,3,4) ) CALL ctl_stop('sbc_cpl_ice_flx: failed to release workspace arrays') 
     1301      CALL wrk_dealloc( jpi,jpj, zcptn, ztmp, zicefr ) 
    13191302      ! 
    13201303   END SUBROUTINE sbc_cpl_ice_flx 
     
    13301313      !!              all the needed fields (as defined in sbc_cpl_init) 
    13311314      !!---------------------------------------------------------------------- 
    1332       USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    1333       USE wrk_nemo, ONLY:   zfr_l => wrk_2d_1   ! 1. - fr_i(:,:) 
    1334       USE wrk_nemo, ONLY:   ztmp1 => wrk_2d_2 , ztmp2 => wrk_2d_3 
    1335       USE wrk_nemo, ONLY:   ztmp3 => wrk_3d_1 , ztmp4 => wrk_3d_2 
    1336       USE wrk_nemo, ONLY:   zotx1 => wrk_2d_4 , zoty1 => wrk_2d_5 , zotz1 => wrk_2d_6 
    1337       USE wrk_nemo, ONLY:   zitx1 => wrk_2d_7 , zity1 => wrk_2d_8 , zitz1 => wrk_2d_9 
    1338       ! 
    13391315      INTEGER, INTENT(in) ::   kt 
    13401316      ! 
    13411317      INTEGER ::   ji, jj, jl   ! dummy loop indices 
    13421318      INTEGER ::   isec, info   ! local integer 
    1343       !!---------------------------------------------------------------------- 
    1344  
    1345       IF( wrk_in_use(2, 1,2,3,4,5,6,7,8,9) .OR. wrk_in_use(3, 1,2)  ) THEN 
    1346          CALL ctl_stop('sbc_cpl_snd: requested workspace arrays are unavailable')   ;   RETURN 
    1347       ENDIF 
     1319      REAL(wp), POINTER, DIMENSION(:,:)   ::   ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 
     1320      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztmp3, ztmp4    
     1321      !!---------------------------------------------------------------------- 
     1322 
     1323      CALL wrk_alloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 
     1324      CALL wrk_alloc( jpi,jpj,jpl, ztmp3, ztmp4 ) 
    13481325 
    13491326      isec = ( kt - nit000 ) * NINT(rdttra(1))        ! date of exchanges 
     
    15651542      ENDIF 
    15661543      ! 
    1567       IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9) .OR. wrk_not_released(3, 1,2) )   CALL ctl_stop('sbc_cpl_snd: failed to release workspace arrays') 
     1544      CALL wrk_dealloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 
     1545      CALL wrk_dealloc( jpi,jpj,jpl, ztmp3, ztmp4 ) 
    15681546      ! 
    15691547   END SUBROUTINE sbc_cpl_snd 
Note: See TracChangeset for help on using the changeset viewer.