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 3184 for branches/2011/dev_NEMO_MERGE_2011 – NEMO

Ignore:
Timestamp:
2011-11-25T16:42:54+01:00 (12 years ago)
Author:
cetlod
Message:

New dynamic allocation in NST modules

Location:
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/NST_SRC
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/NST_SRC/agrif_opa_interp.F90

    r2977 r3184  
    2727   USE agrif_opa_sponge 
    2828   USE lib_mpp 
     29   USE wrk_nemo_2 
    2930 
    3031   IMPLICIT NONE 
     
    4748      !!                  ***  ROUTINE Agrif_Tra  *** 
    4849      !!---------------------------------------------------------------------- 
    49       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    50       USE wrk_nemo, ONLY: wrk_4d_1 
    5150      !! 
    5251      INTEGER  ::   ji, jj, jk, jn   ! dummy loop indices 
     
    5857      IF( Agrif_Root() )   RETURN 
    5958 
    60       ztsa => wrk_4d_1  
    61       IF( wrk_in_use(4, 1) )THEN 
    62          CALL ctl_stop('agrif_tra: requested workspace arrays unavailable.') 
    63          RETURN 
    64       END IF 
     59      CALL wrk_alloc( jpi, jpj, jpk, jpts, ztsa )  
    6560 
    6661      Agrif_SpecialValue    = 0.e0 
     
    159154      ENDIF 
    160155      ! 
    161       IF( wrk_not_released(4, 1) ) THEN 
    162          CALL ctl_stop('agrif_tra: failed to release workspace arrays.') 
    163       ENDIF 
     156      CALL wrk_dealloc( jpi, jpj, jpk, jpts, ztsa )  
    164157      ! 
    165158   END SUBROUTINE Agrif_tra 
     
    170163      !!                  ***  ROUTINE Agrif_DYN  *** 
    171164      !!----------------------------------------------------------------------   
    172       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    173       USE wrk_nemo, ONLY: wrk_2d_4, wrk_2d_5 
    174       USE wrk_nemo, ONLY: wrk_2d_6, wrk_2d_7 
    175       USE wrk_nemo, ONLY: wrk_3d_1, wrk_3d_2 
    176165      !!  
    177166      INTEGER, INTENT(in) ::   kt 
     
    187176      IF( Agrif_Root() )   RETURN 
    188177 
    189       spgu1  => wrk_2d_4 ; spgv1 => wrk_2d_5 
    190       zua2d  => wrk_2d_6 ; zva2d => wrk_2d_7 
    191       zua  => wrk_3d_1 ; zva => wrk_3d_2 
    192       IF( wrk_in_use(2, 4,5,6,7) .OR. wrk_in_use(3, 1,2) )THEN 
    193          CALL ctl_stop('agrif_dyn: requested workspace arrays unavailable.') 
    194          RETURN 
    195       END IF 
     178      CALL wrk_alloc( jpi, jpj, spgv1, spgu1, zua2d, zva2d ) 
     179      CALL wrk_alloc( jpi, jpj, jpk, zua, zva ) 
    196180 
    197181      zrhox = Agrif_Rhox() 
     
    506490      ENDIF 
    507491      ! 
    508       IF( wrk_not_released(3, 1,2) .OR. wrk_not_released(2, 4,5,6,7)) THEN 
    509          CALL ctl_stop('agrif_dyn: failed to release workspace arrays.') 
    510       ENDIF 
     492      CALL wrk_dealloc( jpi, jpj, spgv1, spgu1, zua2d, zva2d ) 
     493      CALL wrk_dealloc( jpi, jpj, jpk, zua, zva ) 
    511494      ! 
    512495   END SUBROUTINE Agrif_dyn 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/NST_SRC/agrif_opa_sponge.F90

    r2977 r3184  
    88   USE in_out_manager 
    99   USE agrif_oce 
     10   USE wrk_nemo_2 
    1011 
    1112   IMPLICIT NONE 
     
    2728      !!--------------------------------------------- 
    2829#include "domzgr_substitute.h90" 
    29       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    30       USE wrk_nemo, ONLY: wrk_2d_1, wrk_2d_2, wrk_2d_3 
    31       USE wrk_nemo, ONLY: wrk_4d_1, wrk_4d_2 
    3230      !! 
    3331      INTEGER :: ji,jj,jk,jn 
     
    4139 
    4240#if defined SPONGE 
    43       localviscsponge => wrk_2d_1 
    44       ztu             => wrk_2d_2 
    45       ztv             => wrk_2d_3 
    46       ztab            => wrk_4d_1 
    47       tsbdiff         => wrk_4d_2 
     41      CALL wrk_alloc( jpi, jpj, localviscsponge, ztu, ztv ) 
     42      CALL wrk_alloc( jpi, jpj, jpk, jpts, ztab, tsbdiff  ) 
    4843 
    4944      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     
    152147      ENDDO 
    153148 
     149      CALL wrk_dealloc( jpi, jpj, localviscsponge, ztu, ztv ) 
     150      CALL wrk_dealloc( jpi, jpj, jpk, jpts, ztab, tsbdiff  ) 
    154151#endif 
    155152 
     
    161158      !!--------------------------------------------- 
    162159#include "domzgr_substitute.h90" 
    163       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    164       USE wrk_nemo, ONLY: wrk_2d_1 
    165       USE wrk_nemo, ONLY: wrk_3d_1, wrk_3d_2 
    166       USE wrk_nemo, ONLY: wrk_3d_3, wrk_3d_4 
    167       USE wrk_nemo, ONLY: wrk_3d_5 
    168160      !! 
    169161      INTEGER :: ji,jj,jk 
     
    177169 
    178170#if defined SPONGE 
    179       localviscsponge => wrk_2d_1 
    180       ubdiff => wrk_3d_1 ; vbdiff => wrk_3d_2 
    181       rotdiff => wrk_3d_3 ; hdivdiff => wrk_3d_4 
    182       ztab => wrk_3d_5 
     171      CALL wrk_alloc( jpi, jpj, localviscsponge ) 
     172      CALL wrk_alloc( jpi, jpj, jpk, ztab, ubdiff, vbdiff, rotdiff, hdivdiff ) 
    183173 
    184174      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     
    327317      END DO                                           !   End of slab 
    328318      !                                                ! =============== 
     319      CALL wrk_dealloc( jpi, jpj, localviscsponge ) 
     320      CALL wrk_dealloc( jpi, jpj, jpk, ztab, ubdiff, vbdiff, rotdiff, hdivdiff ) 
    329321 
    330322#endif 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/NST_SRC/agrif_opa_update.F90

    r3104 r3184  
    99   USE in_out_manager  ! I/O manager 
    1010   USE lib_mpp 
     11   USE wrk_nemo_2 
     12 
    1113   IMPLICIT NONE 
    1214   PRIVATE 
     
    2830      !!   *** ROUTINE Agrif_Update_Tra *** 
    2931      !!--------------------------------------------- 
    30       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    31       USE wrk_nemo, ONLY: wrk_4d_1 
    3232      !! 
    3333      INTEGER, INTENT(in) :: kt 
     
    3737      IF((Agrif_NbStepint() .NE. (Agrif_irhot()-1)).AND.(kt /= 0)) RETURN 
    3838#if defined TWO_WAY 
    39       IF( wrk_in_use(4, 1) ) THEN 
    40          CALL ctl_stop('agrif_update_tra: ERROR: requested workspace arrays unavailable') 
    41          RETURN 
    42       END IF 
    43       ztab => wrk_4d_1 
     39      CALL wrk_alloc( jpi, jpj, jpk, jpts, ztab ) 
    4440 
    4541      Agrif_UseSpecialValueInUpdate = .TRUE. 
     
    5450      Agrif_UseSpecialValueInUpdate = .FALSE. 
    5551 
    56       IF( wrk_not_released(4, 1) ) THEN 
    57          CALL ctl_stop('Agrif_Update_Tra: ERROR: failed to release workspace arrays') 
    58       END IF 
     52      CALL wrk_dealloc( jpi, jpj, jpk, jpts, ztab ) 
    5953#endif 
    6054 
     
    6559      !!   *** ROUTINE Agrif_Update_Dyn *** 
    6660      !!--------------------------------------------- 
    67       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    68       USE wrk_nemo, ONLY: wrk_2d_1 
    69       USE wrk_nemo, ONLY: wrk_3d_1 
    7061      !! 
    7162      INTEGER, INTENT(in) :: kt 
     
    7667      IF ((Agrif_NbStepint() .NE. (Agrif_irhot()-1)).AND.(kt /= 0)) Return 
    7768#if defined TWO_WAY 
    78       ztab => wrk_3d_1 ; ztab2d => wrk_2d_1 
    79       IF( ( wrk_in_use(2, 1)) .OR.  wrk_in_use(3, 1) )THEN 
    80          CALL ctl_stop('agrif_update_dyn: ERROR: requested workspace arrays unavailable') 
    81          RETURN 
    82       END IF 
     69      CALL wrk_alloc( jpi, jpj,      ztab2d ) 
     70      CALL wrk_alloc( jpi, jpj, jpk, ztab   ) 
    8371 
    8472      IF (mod(nbcline,nbclineupdate) == 0) THEN 
     
    10088      Agrif_UseSpecialValueInUpdate = .FALSE. 
    10189 
    102       IF( wrk_not_released(2, 1) .OR. wrk_not_released(3, 1) )THEN 
    103          CALL ctl_stop('agrif_update_dyn: ERROR: failed to release workspace arrays') 
    104       END IF 
     90      CALL wrk_dealloc( jpi, jpj,      ztab2d ) 
     91      CALL wrk_dealloc( jpi, jpj, jpk, ztab   ) 
    10592 
    10693!Done in step 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/NST_SRC/agrif_top_interp.F90

    r2715 r3184  
    99   USE trc 
    1010   USE lib_mpp 
     11   USE wrk_nemo_2 
    1112 
    1213   IMPLICIT NONE 
     
    2930      !!   *** ROUTINE Agrif_trc *** 
    3031      !!--------------------------------------------- 
    31       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    32       USE wrk_nemo, ONLY: wrk_4d_1 
    3332       
    3433      INTEGER :: ji,jj,jk,jn 
     
    4039      IF (Agrif_Root()) RETURN 
    4140 
    42       IF( wrk_in_use(4, 1) ) THEN 
    43          CALL ctl_stop('Agrif_trc : requested workspace arrays unavailable') 
    44          RETURN 
    45       ENDIF 
    46       ztra =>  wrk_4d_1(:,:,:,jptra) 
     41      CALL wrk_alloc( jpi, jpj, jpk, jptra, ztra ) 
    4742 
    4843      Agrif_SpecialValue=0. 
     
    141136      ENDIF 
    142137 
    143       IF( wrk_not_released(4, 1) ) THEN 
    144          CALL ctl_stop('Agrif_trc : failed to release workspace arrays.') 
    145          RETURN 
    146       ENDIF 
     138      CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztra ) 
    147139 
    148140   END SUBROUTINE Agrif_trc 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/NST_SRC/agrif_top_sponge.F90

    r2715 r3184  
    1010   USE trc 
    1111   USE lib_mpp 
     12   USE wrk_nemo_2 
    1213 
    1314   IMPLICIT NONE 
     
    2930      !!--------------------------------------------- 
    3031#include "domzgr_substitute.h90" 
    31       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    32       USE wrk_nemo, ONLY: wrk_2d_1 
    33       USE wrk_nemo, ONLY: wrk_4d_1, wrk_4d_2, wrk_4d_3, wrk_4d_4 
    3432      !!  
    3533      INTEGER :: ji,jj,jk,jl 
     
    4139 
    4240#if defined SPONGE_TOP 
    43       IF( wrk_in_use(4, 1,2,3,4) .OR. wrk_in_use(2, 1) ) THEN 
    44          CALL ctl_stop('Agrif_Sponge_trc : requested workspace arrays unavailable') 
    45          RETURN 
    46       ENDIF 
    47       localviscsponge => wrk_2d_1 
    48       trbdiff(:,:,:,:) => wrk_4d_1(:,:,:,1:jptra) 
    49       ztru   (:,:,:,:) => wrk_4d_2(:,:,:,1:jptra) 
    50       ztrv   (:,:,:,:) => wrk_4d_3(:,:,:,1:jptra) 
    51       ztab   (:,:,:,:) => wrk_4d_4(:,:,:,1:jptra) 
     41      CALL wrk_alloc( jpi, jpj, localviscsponge ) 
     42      CALL wrk_alloc( jpi, jpj, jpk, jptra, trbdiff, ztru, ztrv, ztab ) 
    5243 
    5344      timecoeff = REAL(Agrif_NbStepint(),wp)/Agrif_rhot() 
     
    155146      ENDDO 
    156147  
    157       IF( wrk_not_released(4, 1,2,3,4) .OR. wrk_not_released(2, 1) ) THEN 
    158          CALL ctl_stop('Agrif_Sponge_trc : failed to release workspace arrays.') 
    159          RETURN 
    160       ENDIF 
     148      CALL wrk_dealloc( jpi, jpj, localviscsponge ) 
     149      CALL wrk_dealloc( jpi, jpj, jpk, jptra, trbdiff, ztru, ztrv, ztab ) 
    161150 
    162151#endif 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/NST_SRC/agrif_top_update.F90

    r2715 r3184  
    99   USE agrif_oce 
    1010   USE trc 
     11   USE wrk_nemo_2 
    1112 
    1213   IMPLICIT NONE 
     
    2930      !!   *** ROUTINE Agrif_Update_Trc *** 
    3031      !!--------------------------------------------- 
    31       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    32       USE wrk_nemo, ONLY: wrk_4d_1 
    3332      !! 
    3433      INTEGER, INTENT(in) :: kt 
     
    3938 
    4039#if defined TWO_WAY 
    41       IF( wrk_in_use(4, 1) ) THEN 
    42          CALL ctl_stop('Agrif_Update_trc : requested workspace arrays unavailable') 
    43          RETURN 
    44       ENDIF 
    45       ztra =>  wrk_4d_1(:,:,:,jptra) 
     40      CALL wrk_alloc( jpi, jpj, jpk, jpts, ztra ) 
    4641 
    4742      Agrif_UseSpecialValueInUpdate = .TRUE. 
     
    5752      nbcline_trc = nbcline_trc + 1 
    5853 
    59       IF( wrk_not_released(4, 1) ) THEN 
    60          CALL ctl_stop('Agrif_Update_trc : failed to release workspace arrays.') 
    61          RETURN 
    62       ENDIF 
     54      CALL wrk_dealloc( jpi, jpj, jpk, jpts, ztra ) 
    6355#endif 
    6456 
Note: See TracChangeset for help on using the changeset viewer.