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 2636 – NEMO

Changeset 2636


Ignore:
Timestamp:
2011-03-01T20:04:06+01:00 (12 years ago)
Author:
gm
Message:

dynamic mem: #785 ; move ctl_stop & warn in lib_mpp to avoid a circular dependency + ctl_stop improvment

Location:
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO
Files:
129 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/dom_ice_2.F90

    r2590 r2636  
    1515   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    1616   !!---------------------------------------------------------------------- 
    17    USE par_ice_2 
     17   USE par_ice_2   ! LIM parameters 
    1818 
    1919   IMPLICIT NONE 
    2020   PRIVATE 
    2121 
    22    ! Routine accessibility 
    2322   PUBLIC    dom_ice_alloc_2    ! Called from nemogcm.F90 
    2423 
     
    4241   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)         ::   tmi               !: ice mask: =1 if ice thick > 0 
    4342# endif 
     43   !!---------------------------------------------------------------------- 
     44   CONTAINS 
     45 
     46   INTEGER FUNCTION dom_ice_alloc_2() 
     47      !!---------------------------------------------------------------------- 
     48      USE lib_mpp, ONLY:   ctl_warn   ! MPP library 
     49      INTEGER :: ierr(2) 
     50      !!---------------------------------------------------------------------- 
     51      ierr(:) = 0 
     52      ! 
     53      ALLOCATE( fs2cor(jpi,jpj),  fcor(jpi,jpj),                             & 
     54         &      covrai(jpi,jpj),  area(jpi,jpj), tms(jpi,jpj), tmu(jpi,jpj), & 
     55         &      wght(jpi,jpj,2,2),  Stat=ierr(1) ) 
     56         ! 
     57      ALLOCATE(                                                              & 
     58#if defined key_lim2_vp  
     59         &        akappa(jpi,jpj,2,2), bkappa(jpi,jpj,2,2),                  & 
     60         &        alambd(jpi,jpj,2,2,2,2),                                   & 
     61#else 
     62         &        tmv(jpi,jpj), tmf(jpi,jpj), tmi(jpi,jpj),                  & 
     63#endif 
     64         &        Stat=ierr(2) ) 
     65         ! 
     66      dom_ice_alloc_2 = MAXVAL(ierr) 
     67      IF( dom_ice_alloc_2 /= 0 )   CALL ctl_warn('dom_ice_alloc_2: failed to allocate arrays') 
     68      ! 
     69   END FUNCTION dom_ice_alloc_2 
    4470 
    4571#else 
     
    4975#endif 
    5076   !!====================================================================== 
    51 #if defined key_lim2 
    52    CONTAINS 
    53  
    54      FUNCTION dom_ice_alloc_2() 
    55         USE in_out_manager, ONLY: ctl_warn 
    56         IMPLICIT none 
    57         INTEGER :: dom_ice_alloc_2 
    58         INTEGER :: ierr(2) 
    59  
    60         ierr(:) = 0 
    61  
    62         ALLOCATE(fs2cor(jpi,jpj),  fcor(jpi,jpj),                             & 
    63                  covrai(jpi,jpj),  area(jpi,jpj), tms(jpi,jpj), tmu(jpi,jpj), & 
    64                  wght(jpi,jpj,2,2),  Stat=ierr(1) ) 
    65  
    66         ALLOCATE(                                                             & 
    67 #if defined key_lim2_vp  
    68                  akappa(jpi,jpj,2,2), bkappa(jpi,jpj,2,2),                    & 
    69                  alambd(jpi,jpj,2,2,2,2),                                     & 
    70 #else 
    71                  tmv(jpi,jpj), tmf(jpi,jpj), tmi(jpi,jpj),                    & 
    72 #endif 
    73                  Stat=ierr(2)) 
    74  
    75         dom_ice_alloc_2 = MAXVAL(ierr) 
    76  
    77         IF(dom_ice_alloc_2 /= 0)THEN 
    78            CALL ctl_warn('dom_ice_alloc_2: failed to allocate arrays.') 
    79         END IF 
    80  
    81      END FUNCTION dom_ice_alloc_2 
    82 #endif 
    83  
    8477END MODULE dom_ice_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/ice_2.F90

    r2613 r2636  
    1212   !!   'key_lim2' :                                  LIM 2.0 sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    USE par_ice_2          ! LIM sea-ice parameters 
     14   USE par_ice_2      ! LIM sea-ice parameters 
    1515 
    1616   IMPLICIT NONE 
     
    127127   CONTAINS 
    128128 
    129    FUNCTION ice_alloc_2() 
     129   INTEGER FUNCTION ice_alloc_2() 
    130130      !!----------------------------------------------------------------- 
    131131      !!               *** FUNCTION ice_alloc_2 *** 
    132132      !!----------------------------------------------------------------- 
    133       USE in_out_manager, ONLY: ctl_warn 
    134       INTEGER :: ice_alloc_2     ! return value 
    135       INTEGER :: ierr(9)        ! Local variables 
     133      USE lib_mpp, ONLY:   ctl_warn   ! MPP library 
     134      INTEGER :: ierr(9)              ! Local variables 
    136135      !!----------------------------------------------------------------- 
    137  
    138136      ierr(:) = 0 
    139  
     137      ! 
    140138      ALLOCATE( ahiu(jpi,jpj) , pahu(jpi,jpj) ,                      & 
    141139         &      ahiv(jpi,jpj) , pahv(jpi,jpj) , ust2s(jpi,jpj) , STAT=ierr(1) ) 
    142  
     140         ! 
    143141      !* Ice Rheology 
    144142#if defined key_lim2_vp 
     
    149147                stress12_i(jpi,jpj) , shear_i(jpi,jpj) , hicm(jpi,jpj) , STAT=ierr(2) ) 
    150148#endif 
    151  
    152149      ALLOCATE( rdvosif(jpi,jpj) , rdvobif(jpi,jpj) ,                      & 
    153150         &      fdvolif(jpi,jpj) , rdvonif(jpi,jpj) ,                      & 
     
    181178      ALLOCATE(sxst  (jpi,jpj) , syst  (jpi,jpj) , sxxst (jpi,jpj) ,     & 
    182179         &     syyst (jpi,jpj) , sxyst (jpi,jpj)                   , STAT=ierr(9)) 
    183  
     180         ! 
    184181      ice_alloc_2 = MAXVAL( ierr ) 
    185  
     182      ! 
    186183      IF( ice_alloc_2 /= 0 )   CALL ctl_warn('ice_alloc_2: failed to allocate arrays.') 
    187184      ! 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90

    r2626 r2636  
    3030   USE limsbc_2         ! LIM2 surface boundary condition 
    3131   USE in_out_manager   ! I/O manager 
    32        
     32   USE lib_mpp          ! MPP library 
     33 
    3334   IMPLICIT NONE 
    3435   PRIVATE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90

    r2633 r2636  
    2222   USE lbclnk 
    2323   USE in_out_manager     ! I/O manager 
     24   USE lib_mpp            ! MPP library 
    2425   USE prtctl             ! Print control 
    2526 
     
    7980      IF( wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
    8081         CALL ctl_stop( 'lim_adv_x_2 : requested workspace arrays unavailable.' )   ;   RETURN 
    81       END IF 
     82      ENDIF 
    8283 
    8384      ! Limitation of moments.                                            
     
    224225      ENDIF 
    225226      ! 
    226       IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
    227          CALL ctl_stop( 'lim_adv_x_2 : failed to release workspace arrays.' ) 
    228       END IF 
     227      IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) )   & 
     228          CALL ctl_stop( 'lim_adv_x_2 : failed to release workspace arrays.' ) 
    229229      ! 
    230230   END SUBROUTINE lim_adv_x_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limdia_2.F90

    r2613 r2636  
    1212   !!   'key_lim2' :                                  LIM 2.0 sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!---------------------------------------------------------------------- 
    1514   !!   lim_dia_2      : computation of the time evolution of keys var. 
    1615   !!   lim_dia_init_2 : initialization and namelist read 
     
    2423   USE limistate_2     ! 
    2524   USE in_out_manager  ! I/O manager 
     25   USE lib_mpp         ! MPP library 
    2626 
    2727   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limdmp_2.F90

    r2528 r2636  
    1313   !!   lim_dmp_2      : ice model damping 
    1414   !!---------------------------------------------------------------------- 
    15    USE in_out_manager  ! I/O manager 
    1615   USE ice_2           ! ice variables  
    1716   USE sbc_oce, ONLY : nn_fsbc ! for fldread 
    1817   USE dom_oce         ! for mi0; mi1 etc ... 
    1918   USE fldread         ! read input fields 
    20     
     19   USE in_out_manager  ! I/O manager 
     20   USE lib_mpp         ! MPP library 
     21 
    2122   IMPLICIT NONE 
    2223   PRIVATE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90

    r2633 r2636  
    7272 
    7373      IF(  wrk_in_use(1, 1,2)  .OR.  wrk_in_use(2, 1,2)  ) THEN 
    74          CALL ctl_stop( 'lim_dyn_2 : requested workspace arrays unavailable.' )   ;   RETURN 
    75       END IF 
     74         CALL ctl_stop( 'lim_dyn_2 : requested workspace arrays unavailable' )   ;   RETURN 
     75      ENDIF 
    7676      zind => wrk_1d_1(1:jpj)      ! Set-up pointers to sub-arrays of workspaces 
    7777      zmsk => wrk_1d_2(1:jpj) 
     
    210210      IF(ln_ctl)   CALL prt_ctl(tab2d_1=ust2s , clinfo1=' lim_dyn  : ust2s :') 
    211211      ! 
    212       IF( wrk_not_released(1, 1,2) .OR. wrk_not_released(2, 1,2) )THEN 
    213          CALL ctl_stop('lim_dyn_2 : failed to release workspace arrays.') 
    214       END IF 
     212      IF( wrk_not_released(1, 1,2)     .OR.   & 
     213          wrk_not_released(2, 1,2) )   CALL ctl_stop('lim_dyn_2 : failed to release workspace arrays') 
    215214      ! 
    216215   END SUBROUTINE lim_dyn_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90

    r2633 r2636  
    149149      ENDIF 
    150150      ! 
    151       IF( wrk_not_released(2, 11,12,13,14,15,16) ) THEN 
    152          CALL ctl_stop( 'lim_hdf_2 : failed to release workspace arrays.' )   ;   RETURN 
    153       END IF 
     151      IF( wrk_not_released(2, 11,12,13,14,15,16) )   CALL ctl_stop('lim_hdf_2: failed to release workspace arrays') 
    154152      ! 
    155153   END SUBROUTINE lim_hdf_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90

    r2633 r2636  
    1919   USE lbclnk 
    2020   USE in_out_manager 
     21   USE lib_mpp          ! MPP library 
    2122 
    2223   IMPLICIT NONE 
     
    5657      !!--------------------------------------------------------------------- 
    5758 
    58       IF(wrk_in_use(2, 1,2))THEN 
    59          CALL ctl_stop('lim_msh_2 : requested workspace arrays unavailable.') 
    60          RETURN 
    61       END IF 
     59      IF( wrk_in_use(2, 1,2) ) THEN 
     60         CALL ctl_stop('lim_msh_2 : requested workspace arrays unavailable')   ;   RETURN 
     61      ENDIF 
    6262 
    6363      IF(lwp) THEN 
     
    281281      area(:,:) = e1t(:,:) * e2t(:,:) 
    282282      ! 
    283       IF(wrk_not_released(2, 1,2))THEN 
    284          CALL ctl_stop('lim_msh_2 : failed to release workspace arrays.') 
    285       END IF 
     283      IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('lim_msh_2 : failed to release workspace arrays') 
    286284      ! 
    287285   END SUBROUTINE lim_msh_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90

    r2633 r2636  
    5757CONTAINS 
    5858 
    59    FUNCTION lim_rhg_alloc_2() 
     59   INTEGER FUNCTION lim_rhg_alloc_2() 
    6060      !!------------------------------------------------------------------- 
    6161      !!               ***  FUNCTION lim_rhg_alloc_2  *** 
    6262      !!------------------------------------------------------------------- 
    63       INTEGER :: lim_rhg_alloc_2 
    64       !!------------------------------------------------------------------- 
    65  
    66       ALLOCATE(zu0(jpi,0:jpj+1),      zv0(jpi,0:jpj+1),     & 
    67                zu_n(jpi,0:jpj+1),     zv_n(jpi,0:jpj+1),    & 
    68                zu_a(jpi,0:jpj+1),     zv_a(jpi,0:jpj+1),    & 
    69                zviszeta(jpi,0:jpj+1), zviseta(jpi,0:jpj+1), & 
    70                zzfrld(jpi,0:jpj+1),   zztms(jpi,0:jpj+1),   & 
    71                zi1(jpi,0:jpj+1),      zi2(jpi,0:jpj+1),     & 
    72                zmasst(jpi,0:jpj+1),   zpresh(jpi,0:jpj+1),  & 
    73                Stat=lim_rhg_alloc_2) 
    74  
    75       IF(lim_rhg_alloc_2 /= 0)THEN 
    76          CALL ctl_warn('lim_rhg_alloc_2 : failed to allocate arrays.') 
    77       END IF 
    78  
     63      ALLOCATE( zu0(jpi,0:jpj+1),      zv0(jpi,0:jpj+1),     & 
     64         &      zu_n(jpi,0:jpj+1),     zv_n(jpi,0:jpj+1),    & 
     65         &      zu_a(jpi,0:jpj+1),     zv_a(jpi,0:jpj+1),    & 
     66         &      zviszeta(jpi,0:jpj+1), zviseta(jpi,0:jpj+1), & 
     67         &      zzfrld(jpi,0:jpj+1),   zztms(jpi,0:jpj+1),   & 
     68         &      zi1(jpi,0:jpj+1),      zi2(jpi,0:jpj+1),     & 
     69         &      zmasst(jpi,0:jpj+1),   zpresh(jpi,0:jpj+1),  & 
     70         &      Stat=lim_rhg_alloc_2) 
     71         ! 
     72      IF( lim_rhg_alloc_2 /= 0 )   CALL ctl_warn('lim_rhg_alloc_2 : failed to allocate arrays') 
     73      ! 
    7974   END FUNCTION lim_rhg_alloc_2 
    8075 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90

    r2633 r2636  
    3030   USE albedo           ! albedo parameters 
    3131   USE lbclnk           ! ocean lateral boundary condition - MPP exchanges 
     32   USE lib_mpp          ! MPP library 
    3233   USE in_out_manager   ! I/O manager 
    3334   USE diaar5, ONLY :   lk_diaar5 
     
    6263CONTAINS 
    6364 
    64    FUNCTION lim_sbc_alloc_2() 
     65   INTEGER FUNCTION lim_sbc_alloc_2() 
    6566      !!------------------------------------------------------------------- 
    6667      !!             ***  ROUTINE lim_sbc_alloc_2 *** 
    6768      !!------------------------------------------------------------------- 
    68       INTEGER :: lim_sbc_alloc_2 
    69       !!------------------------------------------------------------------- 
    70       ! 
    7169      ALLOCATE( soce_0(jpi,jpj) , utau_oce(jpi,jpj) ,                       & 
    7270         &      sice_0(jpi,jpj) , vtau_oce(jpi,jpj) , tmod_io(jpi,jpj), STAT=lim_sbc_alloc_2) 
     
    117115      
    118116      IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 4,5) )THEN 
    119          CALL ctl_stop('lim_sbc_flx_2 : requested workspace arrays unavailable.') 
    120          RETURN 
    121       END IF 
     117         CALL ctl_stop('lim_sbc_flx_2 : requested workspace arrays unavailable')   ;   RETURN 
     118      ENDIF 
    122119      zalb  => wrk_3d_4(:,:,1:1)      ! Set-up pointers to sub-arrays of 3d workspaces 
    123120      zalbp => wrk_3d_5(:,:,1:1) 
     
    253250      ENDIF  
    254251      ! 
    255       IF( wrk_not_released(2, 1) .OR. wrk_not_released(3, 4,5) )THEN 
    256          CALL ctl_stop('lim_sbc_flx_2 : failed to release workspace arrays.') 
    257       END IF 
     252      IF( wrk_not_released(2, 1)     .OR.    & 
     253          wrk_not_released(3, 4,5) )   CALL ctl_stop('lim_sbc_flx_2 : failed to release workspace arrays') 
    258254      ! 
    259255   END SUBROUTINE lim_sbc_flx_2 
     
    297293      !!--------------------------------------------------------------------- 
    298294      ! 
    299       IF(wrk_in_use(2, 1,2))THEN 
     295      IF( wrk_in_use(2, 1,2) ) THEN 
    300296         CALL ctl_stop('lim_sbc_tau_2 : requested workspace arrays unavailable.')   ;   RETURN 
    301       END IF 
     297      ENDIF 
    302298      ! 
    303299      SELECT CASE( cp_ice_msh )      
     
    413409         &                       tab2d_2=vtau, clinfo2=' vtau    : '        , mask2=vmask ) 
    414410      !   
    415       IF(wrk_not_released(2, 1,2) )   CALL ctl_stop('lim_sbc_tau_2 : failed to release workspace arrays.') 
     411      IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('lim_sbc_tau_2 : failed to release workspace arrays') 
    416412      ! 
    417413   END SUBROUTINE lim_sbc_tau_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90

    r2633 r2636  
    116116      !!------------------------------------------------------------------- 
    117117 
    118       IF( wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10) .OR.  & 
    119           wrk_in_use(3, 4)   ) THEN 
    120          CALL ctl_stop('lim_thd_2 : requested workspace arrays unavailable') 
    121          RETURN 
    122       END IF 
     118      IF( wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10)   .OR.  & 
     119          wrk_in_use(3, 4)                    ) THEN 
     120         CALL ctl_stop('lim_thd_2 : requested workspace arrays unavailable')   ;   RETURN 
     121      ENDIF 
    123122 
    124123      IF( kt == nit000 )   CALL lim_thd_init_2  ! Initialization (first time-step only) 
     
    521520      ENDIF 
    522521       ! 
    523       IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10) .OR.  & 
    524           wrk_not_released(3, 4)   ) THEN 
     522      IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10)   .OR.  & 
     523          wrk_not_released(3, 4)                    ) THEN 
    525524         CALL ctl_stop('lim_thd_2 : failed to release workspace arrays') 
    526       END IF 
     525      ENDIF 
    527526      ! 
    528527    END SUBROUTINE lim_thd_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90

    r2633 r2636  
    77 
    88   !!---------------------------------------------------------------------- 
    9    !!   lim_lat_acr_2    : lateral accretion of ice 
    10    !! * Modules used 
     9   !!   lim_lat_acr_2   : lateral accretion of ice 
     10   !!---------------------------------------------------------------------- 
    1111   USE par_oce          ! ocean parameters 
    1212   USE phycst 
     
    1414   USE ice_2 
    1515   USE limistate_2  
    16       
     16   USE lib_mpp          ! MPP library 
     17 
    1718   IMPLICIT NONE 
    1819   PRIVATE 
    1920 
    20    !! * Routine accessibility 
    21    PUBLIC lim_thd_lac_2   ! called by lim_thd_2 
    22  
    23    !! * Module variables 
     21   PUBLIC   lim_thd_lac_2   ! called by lim_thd_2 
     22 
    2423   REAL(wp)  ::           &  ! constant values 
    2524      epsi20 = 1.e-20  ,  & 
     
    2726      zzero  = 0.e0    ,  & 
    2827      zone   = 1.e0 
     28 
    2929   !!---------------------------------------------------------------------- 
    3030   !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010) 
     
    7070      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    7171      USE wrk_nemo, ONLY: wrk_1d_1, wrk_1d_2, wrk_1d_3, wrk_1d_4, wrk_1d_5, wrk_1d_6 
    72       USE in_out_manager, ONLY: ctl_stop 
    73       !! 
    74       !! * Arguments 
     72      ! 
    7573      INTEGER , INTENT(IN)::  & 
    7674         kideb          ,   &  ! start point on which the the computation is applied 
    7775         kiut                  ! end point on which the the computation is applied 
    7876 
    79       !! * Local variables 
     77      ! * Local variables 
    8078      INTEGER ::            & 
    8179         ji             ,   &  !  dummy loop indices 
     
    106104      !!---------------------------------------------------------------------       
    107105                
    108       IF(wrk_in_use(1, 1,2,3,4,5,6))THEN 
    109          CALL ctl_stop('lim_thd_lac_2 : requestead workspace arrays unavailable.') 
    110          RETURN 
    111       END IF 
     106      IF( wrk_in_use(1, 1,2,3,4,5,6) ) THEN 
     107         CALL ctl_stop('lim_thd_lac_2 : requestead workspace arrays unavailable')   ;   RETURN 
     108      ENDIF 
    112109      ! Set-up pointers to sub-arrays of workspace arrays 
    113110      zqbgow    => wrk_1d_1(1:jpij) 
     
    235232      END DO 
    236233       
    237       IF(wrk_not_released(1, 1,2,3,4,5,6))THEN 
    238          CALL ctl_stop('lim_thd_lac_2 : failed to release workspace arrays.') 
    239       END IF 
    240  
     234      IF( wrk_not_released(1, 1,2,3,4,5,6) )   CALL ctl_stop('lim_thd_lac_2 : failed to release workspace arrays.') 
     235      ! 
    241236   END SUBROUTINE lim_thd_lac_2 
    242237#else 
    243    !!====================================================================== 
     238   !!---------------------------------------------------------------------- 
    244239   !!                       ***  MODULE limthd_lac_2   *** 
    245240   !!                           no sea ice model 
    246    !!====================================================================== 
     241   !!---------------------------------------------------------------------- 
    247242CONTAINS 
    248243   SUBROUTINE lim_thd_lac_2           ! Empty routine 
    249244   END SUBROUTINE lim_thd_lac_2 
    250245#endif 
     246   !!====================================================================== 
    251247END MODULE limthd_lac_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90

    r2633 r2636  
    1111   !!   'key_lim2'                                    LIM 2.0 sea-ice model 
    1212   !!---------------------------------------------------------------------- 
    13    !!---------------------------------------------------------------------- 
    1413   !!   lim_thd_zdf_2 : vertical accr./abl. and lateral ablation of sea ice 
    1514   !!---------------------------------------------------------------------- 
    16    !! * Modules used 
    1715   USE par_oce          ! ocean parameters 
    1816   USE phycst           ! ??? 
     
    2119   USE limistate_2 
    2220   USE in_out_manager 
     21   USE lib_mpp          ! MPP library 
    2322   USE cpl_oasis3, ONLY : lk_cpl 
    2423       
     
    3534   !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010) 
    3635   !! $Id$ 
    37    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     36   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3837   !!---------------------------------------------------------------------- 
    39  
    4038CONTAINS 
    4139 
     
    170168 
    171169       IF(wrk_in_use(1, 1,  2, 3, 4, 5, 6, 7, 8, 9,10, & 
    172                         11,12,13,14,15,16,17,18,19,20, & 
    173                         21,22,23,24,25,26,27))THEN 
    174           CALL ctl_stop('lim_thd_zdf_2 : requested workspace arrays unavailable.') 
    175           RETURN 
    176        END IF 
     170          &             11,12,13,14,15,16,17,18,19,20, & 
     171          &             21,22,23,24,25,26,27) ) THEN 
     172          CALL ctl_stop('lim_thd_zdf_2 : requested workspace arrays unavailable')   ;   RETURN 
     173       ENDIF 
    177174 
    178175       ztsmlt  => wrk_1d_1(1:jpij) 
     
    808805       END DO 
    809806       !  
    810        IF(wrk_not_released(1, 1,  2, 3, 4, 5, 6, 7, 8, 9,10, & 
    811                               11,12,13,14,15,16,17,18,19,20, & 
    812                               21,22,23,24,25,26,27))THEN 
    813           CALL ctl_stop('lim_thd_zdf_2 : failed to release workspace arrays.') 
    814        END IF 
     807       IF( wrk_not_released(1, 1,  2, 3, 4, 5, 6, 7, 8, 9,10,   & 
     808           &                   11,12,13,14,15,16,17,18,19,20,   & 
     809           &                   21,22,23,24,25,26,27)        )   & 
     810           CALL ctl_stop('lim_thd_zdf_2 : failed to release workspace arrays.') 
    815811       ! 
    816812    END SUBROUTINE lim_thd_zdf_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90

    r2633 r2636  
    7979      !--------------------------------------------------------------------- 
    8080 
    81       IF(wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10))THEN 
    82          CALL ctl_stop('lim_trp_2 : requested workspace arrays unavailable.') 
    83          RETURN 
    84       END IF 
     81      IF( wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10) ) THEN 
     82         CALL ctl_stop('lim_trp_2 : requested workspace arrays unavailable')   ;   RETURN 
     83      ENDIF 
    8584 
    8685      IF( kt == nit000  )   CALL lim_trp_init_2      ! Initialization (first time-step only) 
     
    274273      ENDIF 
    275274      ! 
    276       IF(wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10))THEN 
    277          CALL ctl_stop('lim_trp_2 : failed to release workspace arrays.') 
    278       END IF 
     275      IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10) )   CALL ctl_stop('lim_trp_2 : failed to release workspace arrays') 
    279276      ! 
    280277   END SUBROUTINE lim_trp_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90

    r2633 r2636  
    2626   USE ice_2 
    2727 
     28   USE dianam          ! build name of file (routine) 
    2829   USE lbclnk 
    29    USE dianam          ! build name of file (routine) 
    3030   USE in_out_manager 
     31   USE lib_mpp         ! MPP library 
    3132   USE iom 
    3233   USE ioipsl 
     
    6970CONTAINS 
    7071 
    71    FUNCTION lim_wri_alloc_2() 
     72   INTEGER FUNCTION lim_wri_alloc_2() 
    7273      !!------------------------------------------------------------------- 
    7374      !!                  ***   ROUTINE lim_wri_alloc_2  *** 
    7475      !!------------------------------------------------------------------- 
    75       IMPLICIT none 
    76       INTEGER :: lim_wri_alloc_2 
    77       !!------------------------------------------------------------------- 
    78       ! 
    7976      ALLOCATE( ndex51(jpij), zcmo(jpi,jpj,jpnoumax), STAT=lim_wri_alloc_2) 
    8077      ! 
     
    115112      !!------------------------------------------------------------------- 
    116113 
    117       IF(wrk_in_use(2, 1))THEN 
    118          CALL ctl_stop('lim_wri_2 : requested workspace array unavailable.') 
    119          RETURN 
    120       END IF 
     114      IF( wrk_in_use(2, 1) ) THEN 
     115         CALL ctl_stop('lim_wri_2 : requested workspace array unavailable')   ;   RETURN 
     116      ENDIF 
    121117                                                 !--------------------! 
    122118      IF( kt == nit000 ) THEN                    !   Initialisation   ! 
     
    211207      IF( ( nn_fsbc * niter ) >= nitend )   CALL histclo( nice )  
    212208 
    213       IF(wrk_not_released(2, 1))THEN 
    214          CALL ctl_stop('lim_wri_2 : failed to release workspace array.') 
    215       END IF 
    216  
     209      IF( wrk_not_released(2, 1) )   CALL ctl_stop('lim_wri_2 : failed to release workspace array.') 
     210      ! 
    217211   END SUBROUTINE lim_wri_2 
    218212      
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90

    r2590 r2636  
    1212   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    1313   !!---------------------------------------------------------------------- 
    14    !! * Modules used 
    1514   USE par_ice_2 
    1615 
     
    8584      tbif_1d              !: corresponding to the 2D var  tbif 
    8685 
    87    !!====================================================================== 
     86   !!---------------------------------------------------------------------- 
     87   !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010) 
     88   !! $Id$ 
     89   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     90   !!---------------------------------------------------------------------- 
    8891 CONTAINS 
    8992 
    90    FUNCTION thd_ice_alloc_2() 
    91       USE in_out_manager, ONLY: ctl_warn 
    92       IMPLICIT none 
    93       INTEGER :: thd_ice_alloc_2 
    94       ! Local vars 
     93   INTEGER FUNCTION thd_ice_alloc_2() 
     94      !!---------------------------------------------------------------------- 
     95      USE lib_mpp        ! MPP library 
    9596      INTEGER :: ierr(4) 
    96  
     97      !!---------------------------------------------------------------------- 
     98      ! 
    9799      ierr(:) = 0 
    98  
    99       ALLOCATE(npb(jpij), npac(jpij),                             & 
    100                qldif_1d(jpij), qcmif_1d(jpij), thcm_1d(jpij),     & 
    101                fstbif_1d(jpij), fltbif_1d(jpij), fscbq_1d(jpij),  & 
    102                qsr_ice_1d(jpij),fr1_i0_1d(jpij), fr2_i0_1d(jpij), Stat=ierr(1)) 
    103  
    104       ALLOCATE(qns_ice_1d(jpij), qfvbq_1d(jpij), sist_1d(jpij), tfu_1d(jpij), & 
    105                sprecip_1d(jpij), h_snow_1d(jpij),h_ice_1d(jpij),frld_1d(jpij),& 
    106                qstbif_1d(jpij),  fbif_1d(jpij),  Stat=ierr(2)) 
    107  
    108       ALLOCATE(rdmicif_1d(jpij), rdmsnif_1d(jpij), qlbbq_1d(jpij),   & 
    109                dmgwi_1d(jpij)  , dvsbq_1d(jpij)  , rdvomif_1d(jpij), & 
    110                dvbbq_1d(jpij)  , dvlbq_1d(jpij)  , dvnbq_1d(jpij)  , & 
    111                Stat=ierr(3)) 
    112  
    113       ALLOCATE(dqns_ice_1d(jpij) ,qla_ice_1d(jpij), dqla_ice_1d(jpij), & 
    114                tbif_1d(jpij, jplayersp1), Stat=ierr(4)) 
    115  
     100      ! 
     101      ALLOCATE( npb(jpij), npac(jpij),                             & 
     102         &      qldif_1d(jpij), qcmif_1d(jpij), thcm_1d(jpij),     & 
     103         &      fstbif_1d(jpij), fltbif_1d(jpij), fscbq_1d(jpij),  & 
     104         &      qsr_ice_1d(jpij),fr1_i0_1d(jpij), fr2_i0_1d(jpij), Stat=ierr(1)) 
     105         ! 
     106      ALLOCATE( qns_ice_1d(jpij), qfvbq_1d(jpij), sist_1d(jpij), tfu_1d(jpij), & 
     107         &      sprecip_1d(jpij), h_snow_1d(jpij),h_ice_1d(jpij),frld_1d(jpij),& 
     108         &      qstbif_1d(jpij),  fbif_1d(jpij),  Stat=ierr(2)) 
     109         ! 
     110      ALLOCATE( rdmicif_1d(jpij), rdmsnif_1d(jpij), qlbbq_1d(jpij),   & 
     111         &      dmgwi_1d(jpij)  , dvsbq_1d(jpij)  , rdvomif_1d(jpij), & 
     112         &      dvbbq_1d(jpij)  , dvlbq_1d(jpij)  , dvnbq_1d(jpij)  , & 
     113         &      Stat=ierr(3)) 
     114         ! 
     115      ALLOCATE( dqns_ice_1d(jpij) ,qla_ice_1d(jpij), dqla_ice_1d(jpij), & 
     116         &      tbif_1d(jpij, jplayersp1), Stat=ierr(4)) 
     117         ! 
    116118      thd_ice_alloc_2 = MAXVAL(ierr) 
    117  
    118       IF(thd_ice_alloc_2 /= 0)THEN 
    119          CALL ctl_warn('thd_ice_alloc_2: failed to allocate arrays.') 
    120       END IF 
    121  
     119      IF( thd_ice_alloc_2 /= 0 )   CALL ctl_warn('thd_ice_alloc_2: failed to allocate arrays') 
     120      ! 
    122121   END FUNCTION thd_ice_alloc_2 
    123122 
    124123#endif 
     124   !!====================================================================== 
    125125END MODULE thd_ice_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/dom_ice.F90

    r2612 r2636  
    99   USE par_ice        ! LIM-3 parameter 
    1010   USE in_out_manager ! I/O manager 
     11   USE lib_mpp         ! MPP library 
    1112 
    1213   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r2612 r2636  
    1313   USE par_ice          ! LIM sea-ice parameters 
    1414   USE in_out_manager   ! I/O manager 
     15   USE lib_mpp         ! MPP library 
    1516 
    1617   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90

    r2626 r2636  
    6464      ! 
    6565      IF( lk_mpp    )   CALL mpp_sum( ierr ) 
    66       IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'ice_init : unable to allocate ice arrays' ) 
     66      IF( ierr /= 0 )   CALL ctl_stop('STOP', 'ice_init : unable to allocate ice arrays') 
    6767      ! 
    6868      !                                ! adequation jpk versus ice/snow layers/categories 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90

    r2633 r2636  
    2121   USE in_out_manager   ! I/O manager 
    2222   USE prtctl           ! Print control 
     23   USE lib_mpp          ! MPP library 
    2324 
    2425   IMPLICIT NONE 
     
    7576 
    7677      IF( wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
    77          CALL ctl_stop( 'lim_adv_x : requested workspace arrays unavailable.' )   ;   RETURN 
    78       END IF 
     78         CALL ctl_stop('lim_adv_x: requested workspace arrays unavailable')   ;   RETURN 
     79      ENDIF 
    7980 
    8081      ! Limitation of moments.                                            
     
    223224      ENDIF 
    224225      ! 
    225       IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
    226          CALL ctl_stop( 'lim_adv_x : failed to release workspace arrays.' ) 
    227       END IF 
     226      IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) )    & 
     227          CALL ctl_stop('lim_adv_x : failed to release workspace arrays') 
    228228      ! 
    229229   END SUBROUTINE lim_adv_x 
     
    263263      !--------------------------------------------------------------------- 
    264264 
    265       IF(wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
    266          CALL ctl_stop( 'lim_adv_y : requested workspace arrays unavailable.' )   ;   RETURN 
    267       END IF 
     265      IF( wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
     266         CALL ctl_stop('lim_adv_y : requested workspace arrays unavailable')   ;   RETURN 
     267      ENDIF 
    268268 
    269269      ! Limitation of moments. 
     
    413413      ENDIF 
    414414      ! 
    415       IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 
    416          CALL ctl_stop( 'lim_adv_y : failed to release workspace arrays.' ) 
    417       END IF 
     415      IF( wrk_not_released(2, 11,12,13,14,15,16,17,18,19,20,21) )    & 
     416         CALL ctl_stop('lim_adv_y: failed to release workspace arrays') 
    418417      ! 
    419418   END SUBROUTINE lim_adv_y 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90

    r2633 r2636  
    6969 
    7070      IF(  wrk_in_use(1, 1,2)  .OR.  wrk_in_use(2, 1,2)  ) THEN 
    71          CALL ctl_stop( 'lim_dyn : requested workspace arrays unavailable.' )   ;   RETURN 
    72       END IF 
     71         CALL ctl_stop('lim_dyn : requested workspace arrays unavailable')   ;   RETURN 
     72      ENDIF 
    7373      zind => wrk_1d_1(1:jpj)      ! Set-up pointers to sub-arrays of workspaces 
    7474      zmsk => wrk_1d_2(1:jpj) 
     
    212212      ENDIF 
    213213      ! 
    214       IF(  wrk_not_released(1, 1,2)  .OR.  wrk_not_released(2, 1,2)  ) THEN 
    215          CALL ctl_stop( 'lim_dyn : failed to release workspace arrays.' ) 
    216       END IF 
     214      IF( wrk_not_released(1, 1,2) .OR.   & 
     215          wrk_not_released(2, 1,2)  )   CALL ctl_stop('lim_dyn : failed to release workspace arrays' ) 
    217216      ! 
    218217   END SUBROUTINE lim_dyn 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90

    r2633 r2636  
    6363       
    6464      IF( wrk_in_use(2, 11,12,13,14,15,16) ) THEN 
    65          CALL ctl_stop( 'lim_hdf: ERROR: requested workspace arrays unavailable' )   ;   RETURN 
    66       END IF 
     65         CALL ctl_stop( 'lim_hdf: requested workspace arrays unavailable' )   ;   RETURN 
     66      ENDIF 
    6767 
    6868      !                       !==  Initialisation  ==! 
     
    146146      ENDIF 
    147147      ! 
    148       IF( wrk_not_released(2, 11,12,13,14,15,16) ) THEN 
    149          CALL ctl_stop( 'lim_hdf : failed to release workspace arrays.' )   ;   RETURN 
    150       END IF 
     148      IF( wrk_not_released(2, 11,12,13,14,15,16) )   CALL ctl_stop('lim_hdf: failed to release workspace arrays') 
    151149      ! 
    152150   END SUBROUTINE lim_hdf 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r2633 r2636  
    2424   USE in_out_manager   ! I/O manager 
    2525   USE lbclnk           ! lateral boundary condition - MPP exchanges 
     26   USE lib_mpp          ! MPP library 
    2627 
    2728   IMPLICIT NONE 
     
    7374 
    7475      IF(  wrk_in_use(1, 1,2)  ) THEN 
    75          CALL ctl_stop( 'lim_istate : requested workspace arrays unavailable.' )   ;   RETURN 
    76       END IF 
     76         CALL ctl_stop( 'lim_istate: requested workspace arrays unavailable' )   ;   RETURN 
     77      ENDIF 
    7778      zgfactorn => wrk_1d_1(1:jpm)   ;   zhin => wrk_1d_3(1:jpm)   ! Set-up pointers to sub-arrays of workspaces 
    7879      zgfactors => wrk_1d_2(1:jpm)   ;   zhis => wrk_1d_4(1:jpm) 
     
    516517      CALL lbc_lnk( fsbbq  , 'T', 1. ) 
    517518      ! 
    518       IF(  wrk_not_released(1, 1,2)  ) THEN 
    519          CALL ctl_stop( 'lim_istate : failed to release workspace arrays.' ) 
    520       END IF 
     519      IF( wrk_not_released(1, 1,2) )   CALL ctl_stop('lim_istate : failed to release workspace arrays') 
    521520      ! 
    522521   END SUBROUTINE lim_istate 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90

    r2633 r2636  
    2424   USE limcons          ! LIM 
    2525   USE in_out_manager   ! I/O manager 
    26    USE prtctl           ! Print control 
    2726   USE lbclnk           ! lateral boundary condition - MPP exchanges 
    2827   USE lib_mpp          ! MPP library 
     28   USE prtctl           ! Print control 
    2929   USE wrk_nemo         ! workspace manager 
    3030 
     
    7878CONTAINS 
    7979 
    80    FUNCTION lim_itd_me_alloc() 
     80   INTEGER FUNCTION lim_itd_me_alloc() 
    8181      !!---------------------------------------------------------------------! 
    8282      !!                ***  ROUTINE lim_itd_me_alloc *** 
    8383      !!---------------------------------------------------------------------! 
    84       INTEGER :: lim_itd_me_alloc 
    85       !!---------------------------------------------------------------------! 
    86       ! 
    8784      ALLOCATE(                                                                     & 
    8885         !* Variables shared among ridging subroutines 
     
    9693         &      dardg1dt(jpi,jpj)  , dardg2dt(jpi,jpj)                        ,     &  
    9794         &      dvirdgdt(jpi,jpj)  , opening(jpi,jpj)                         , STAT=lim_itd_me_alloc ) 
    98       ! 
    99       IF( lim_itd_me_alloc /= 0 ) THEN 
    100          CALL ctl_warn( 'lim_itd_me_alloc: failed to allocate arrays.' ) 
    101       END IF 
     95         ! 
     96      IF( lim_itd_me_alloc /= 0 )   CALL ctl_warn( 'lim_itd_me_alloc: failed to allocate arrays' ) 
    10297      ! 
    10398   END FUNCTION lim_itd_me_alloc 
     
    149144 
    150145      IF( wrk_in_use(2, 1,2,3,4,5,6,7,8) ) THEN 
    151          CALL ctl_stop(' : requested workspace arrays unavailable.')   ;   RETURN 
    152       END IF 
     146         CALL ctl_stop('lim_itd_me: requested workspace arrays unavailable')   ;   RETURN 
     147      ENDIF 
    153148 
    154149      IF( numit == nstart  )   CALL lim_itd_me_init   ! Initialization (first time-step only) 
     
    494489      END DO 
    495490 
    496       IF( wrk_not_released(2, 1,2,3,4,5,6,7,8) )   CALL ctl_stop( 'lim_itd_me : failed to release workspace arrays.' ) 
     491      IF( wrk_not_released(2, 1,2,3,4,5,6,7,8) )   CALL ctl_stop('lim_itd_me: failed to release workspace arrays') 
    497492      ! 
    498493   END SUBROUTINE lim_itd_me 
     
    525520 
    526521      IF( wrk_in_use(2, 1) ) THEN 
    527          CALL ctl_stop('lim_itd_me_icestrength : requested workspace array unavailable.')   ;   RETURN 
    528       END IF 
     522         CALL ctl_stop('lim_itd_me_icestrength : requested workspace array unavailable')   ;   RETURN 
     523      ENDIF 
    529524 
    530525      !------------------------------------------------------------------------------! 
     
    678673      ENDIF ! ksmooth 
    679674 
    680       ! Boundary conditions 
    681       CALL lbc_lnk( strength, 'T', 1. ) 
    682  
    683       IF(wrk_not_released(2, 1))THEN 
    684          CALL ctl_stop('lim_itd_me_icestrength : failed to release workspace array.') 
    685       END IF 
    686  
     675      CALL lbc_lnk( strength, 'T', 1. )      ! Boundary conditions 
     676 
     677      IF( wrk_not_released(2, 1) )   CALL ctl_stop('lim_itd_me_icestrength: failed to release workspace array') 
     678      ! 
    687679   END SUBROUTINE lim_itd_me_icestrength 
    688680 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limmsh.F90

    r2612 r2636  
    1717   USE in_out_manager ! I/O manager 
    1818   USE lbclnk         ! lateral boundary condition - MPP exchanges 
     19   USE lib_mpp        ! MPP library 
    1920 
    2021   IMPLICIT NONE 
     
    5455 
    5556      IF( jphgr_msh == 2 .OR. jphgr_msh == 3 .OR. jphgr_msh == 5 )   & 
    56           &      CALL ctl_stop(' Coriolis parameter in LIM not set for f- or beta-plane' ) 
     57          &      CALL ctl_stop(' Coriolis parameter in LIM not set for f- or beta-plane') 
    5758 
    5859      !                           !==  coriolis factor & Equator position ==! 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90

    r2633 r2636  
    2323   USE in_out_manager   ! I/O manager 
    2424   USE iom              ! I/O library 
     25   USE lib_mpp          ! MPP library 
    2526 
    2627   IMPLICIT NONE 
     
    103104 
    104105      IF( wrk_in_use(2, 1) ) THEN 
    105          CALL ctl_stop( 'lim_rst_write : requested workspace arrays unavailable.' )   ;   RETURN 
     106         CALL ctl_stop( 'lim_rst_write : requested workspace arrays unavailable' )   ;   RETURN 
    106107      END IF 
    107108 
     
    294295      ENDIF 
    295296      ! 
    296       IF( wrk_not_released(2, 1) ) THEN 
    297          CALL ctl_stop( 'lim_rst_write : failed to release workspace arrays.' ) 
    298       END IF 
     297      IF( wrk_not_released(2, 1) )   CALL ctl_stop( 'lim_rst_write : failed to release workspace arrays' ) 
    299298      ! 
    300299   END SUBROUTINE lim_rst_write 
     
    322321      IF( wrk_in_use(2, 1) ) THEN 
    323322         CALL ctl_stop( 'lim_rst_read : requested workspace arrays unavailable.' )   ;   RETURN 
    324       END IF 
     323      ENDIF 
    325324 
    326325      IF(lwp) THEN 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r2633 r2636  
    3030   USE lbclnk           ! ocean lateral boundary condition 
    3131   USE in_out_manager   ! I/O manager 
     32   USE lib_mpp          ! MPP library 
    3233   USE prtctl           ! Print control 
    3334   USE cpl_oasis3, ONLY : lk_cpl 
     
    5859CONTAINS 
    5960 
    60    FUNCTION lim_sbc_alloc() 
     61   INTEGER FUNCTION lim_sbc_alloc() 
    6162      !!------------------------------------------------------------------- 
    6263      !!             ***  ROUTINE lim_sbc_alloc *** 
    6364      !!------------------------------------------------------------------- 
    64       INTEGER :: lim_sbc_alloc   ! return value 
    65       !!------------------------------------------------------------------- 
    66       ! 
    6765      ALLOCATE( soce_0(jpi,jpj) , utau_oce(jpi,jpj) ,                       & 
    6866         &      sice_0(jpi,jpj) , vtau_oce(jpi,jpj) , tmod_io(jpi,jpj), STAT=lim_sbc_alloc) 
    6967         ! 
    7068      IF( lk_mpp             )   CALL mpp_sum( lim_sbc_alloc ) 
    71       IF( lim_sbc_alloc /= 0 )   CALL ctl_warn('lim_sbc_alloc: failed to allocate arrays.') 
    72       ! 
     69      IF( lim_sbc_alloc /= 0 )   CALL ctl_warn('lim_sbc_alloc: failed to allocate arrays') 
    7370   END FUNCTION lim_sbc_alloc 
    7471 
     
    112109 
    113110      IF( wrk_in_use(2, 1,2) .OR. wrk_in_use(3, 4,5) ) THEN 
    114          CALL ctl_stop( 'lim_sbc_flx : requested workspace arrays unavailable.' )   ;   RETURN 
     111         CALL ctl_stop( 'lim_sbc_flx : requested workspace arrays unavailable' )   ;   RETURN 
    115112      ENDIF 
    116113      ! Set-up pointers to sub-arrays of 3d workspaces 
     
    300297      ENDIF 
    301298      ! 
    302       IF(  wrk_not_released(2, 1,2)  .OR.  wrk_not_released(3, 4,5)  ) THEN 
    303          CALL ctl_stop( 'lim_sbc_flx : failed to release workspace arrays.' ) 
    304       END IF 
     299      IF( wrk_not_released(2, 1,2)    .OR.   & 
     300          wrk_not_released(3, 4,5)  )        & 
     301          CALL ctl_stop( 'lim_sbc_flx: failed to release workspace arrays' ) 
    305302      !  
    306303   END SUBROUTINE lim_sbc_flx 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r2633 r2636  
    458458      ENDIF 
    459459      ! 
    460       IF( wrk_not_released(2, 1) )   CALL ctl_stop( 'lim_thd : failed to release workspace arrays' ) 
     460      IF( wrk_not_released(2, 1) )   CALL ctl_stop( 'lim_thd: failed to release workspace arrays' ) 
    461461      ! 
    462462   END SUBROUTINE lim_thd 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r2633 r2636  
    103103 
    104104      IF( wrk_in_use(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22) ) THEN 
    105          CALL ctl_stop('lim_thd_dh : requestead workspace arrays unavailable.')   ;   RETURN 
    106       END IF 
     105         CALL ctl_stop('lim_thd_dh: requestead workspace arrays unavailable')   ;   RETURN 
     106      ENDIF 
    107107      ! Set-up pointers to sub-arrays of workspace arrays 
    108108      zh_i        => wrk_1d_1 (1:jpij)   ! ice layer thickness 
     
    700700      ! 
    701701      IF( wrk_not_released(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21) )   & 
    702          &     CALL ctl_stop('lim_thd_dh : failed to release workspace arrays.') 
     702          CALL ctl_stop('lim_thd_dh : failed to release workspace arrays') 
    703703      ! 
    704704   END SUBROUTINE lim_thd_dh 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90

    r2633 r2636  
    122122 
    123123      IF( wrk_in_use(1, 1,2,3,4,5,6,7,8) ) THEN 
    124          CALL ctl_stop('lim_thd_dh : requestead workspace arrays unavailable.')   ;   RETURN 
     124         CALL ctl_stop('lim_thd_dh : requestead workspace arrays unavailable')   ;   RETURN 
    125125      END IF 
    126126 
     
    687687      END DO !jk 
    688688      ! 
    689       IF( wrk_not_released(1, 1,2,3,4,5,6,7,8) )   CALL ctl_stop( 'lim_thd_ent : failed to release workspace arrays.' ) 
     689      IF( wrk_not_released(1, 1,2,3,4,5,6,7,8) )   CALL ctl_stop( 'lim_thd_ent : failed to release workspace arrays' ) 
    690690      ! 
    691691   END SUBROUTINE lim_thd_ent 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r2633 r2636  
    2828   USE wrk_nemo         ! workspace manager 
    2929   USE in_out_manager   ! I/O manager 
     30   USE lib_mpp         ! MPP library 
    3031 
    3132   IMPLICIT NONE 
     
    690691      ! 
    691692      IF( wrk_not_released(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR.     & 
    692          &wrk_not_released(2, 1,2,3,4,5,6,7,8)                       )   & 
    693          &      CALL ctl_stop( 'lim_thd_lac : failed to release workspace arrays.' ) 
     693          wrk_not_released(2, 1,2,3,4,5,6,7,8)                       )   & 
     694          CALL ctl_stop( 'lim_thd_lac : failed to release workspace arrays' ) 
    694695      ! 
    695696   END SUBROUTINE lim_thd_lac 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90

    r2633 r2636  
    2323   USE wrk_nemo         ! workspace manager 
    2424   USE in_out_manager   ! I/O manager 
     25   USE lib_mpp         ! MPP library 
    2526 
    2627   IMPLICIT NONE 
     
    237238      ENDIF 
    238239      ! 
    239       IF( wrk_not_released(1, 1,2,3) )   CALL ctl_stop( 'lim_thd_lac : failed to release workspace arrays.' ) 
     240      IF( wrk_not_released(1, 1,2,3) )   CALL ctl_stop( 'lim_thd_lac : failed to release workspace arrays' ) 
    240241      ! 
    241242   END SUBROUTINE lim_thd_sal 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r2633 r2636  
    8080      !!--------------------------------------------------------------------- 
    8181 
    82       IF( wrk_in_use( 2, 1,2,3,4,5 ) ) THEN 
    83          CALL ctl_stop( 'lim_trp : requested workspace arrays unavailable.' )   ;   RETURN 
     82      IF( wrk_in_use(2, 1,2,3,4,5) ) THEN 
     83         CALL ctl_stop( 'lim_trp : requested workspace arrays unavailable' )   ;   RETURN 
    8484      END IF 
    8585 
     
    463463      ENDIF 
    464464      ! 
    465       IF( wrk_not_released( 2, 1,2,3,4,5 ) )   CALL ctl_stop('lim_trp_2 : failed to release workspace arrays.') 
     465      IF( wrk_not_released(2, 1,2,3,4,5) )   CALL ctl_stop('lim_trp_2 : failed to release workspace arrays') 
    466466      ! 
    467467   END SUBROUTINE lim_trp 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r2633 r2636  
    5252   USE wrk_nemo         ! workspace manager 
    5353   USE in_out_manager   ! I/O manager 
     54   USE lib_mpp         ! MPP library 
    5455 
    5556   IMPLICIT NONE 
     
    305306 
    306307      IF( wrk_in_use( 2, 1,2 ) ) THEN 
    307          CALL ctl_stop( 'lim_var_salprof : requested workspace arrays unavailable.' )   ;   RETURN 
     308         CALL ctl_stop( 'lim_var_salprof: requested workspace arrays unavailable' )   ;   RETURN 
    308309      END IF 
    309310 
     
    388389      ENDIF ! num_sal 
    389390      ! 
    390       IF( wrk_not_released( 2, 1,2 ) )   CALL ctl_stop('lim_var_salprof : failed to release workspace arrays.') 
     391      IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('lim_var_salprof: failed to release workspace arrays.') 
    391392      ! 
    392393   END SUBROUTINE lim_var_salprof 
     
    510511      ENDIF 
    511512      ! 
    512       IF( wrk_not_released(1, 1) )   CALL ctl_stop( 'lim_var_salprof1d : failed to release workspace arrays.' ) 
     513      IF( wrk_not_released(1, 1) )   CALL ctl_stop( 'lim_var_salprof1d : failed to release workspace arrays' ) 
    513514      ! 
    514515   END SUBROUTINE lim_var_salprof1d 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r2633 r2636  
    1515   USE phycst 
    1616   USE dom_oce 
    17    USE in_out_manager 
    1817   USE sbc_oce         ! Surface boundary condition: ocean fields 
    1918   USE sbc_ice         ! Surface boundary condition: ice fields 
    2019   USE dom_ice 
    2120   USE ice 
     21   USE limvar 
     22   USE in_out_manager 
    2223   USE lbclnk 
     24   USE lib_mpp         ! MPP library 
    2325   USE par_ice 
    24    USE limvar 
    2526 
    2627   IMPLICIT NONE 
     
    7071      !!  modif : 03/06/98 
    7172      !!------------------------------------------------------------------- 
    72       USE wrk_nemo, ONLY: wrk_not_released, wrk_in_use 
    73       USE wrk_nemo, ONLY: zfield => wrk_2d_1             ! 2D workspace 
    74       USE wrk_nemo, ONLY: wrk_3d_1, wrk_3D_2, wrk_3d_3   ! 3D workspace 
     73      USE wrk_nemo, ONLY:   wrk_not_released, wrk_in_use 
     74      USE wrk_nemo, ONLY:   zfield => wrk_2d_1             ! 2D workspace 
     75      USE wrk_nemo, ONLY:   wrk_3d_1, wrk_3D_2, wrk_3d_3   ! 3D workspace 
    7576      ! 
    7677      INTEGER, INTENT(in) ::   kindic   ! if kindic < 0 there has been an error somewhere 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90

    r2601 r2636  
    88   USE par_ice        ! LIM-3 parameters 
    99   USE in_out_manager ! I/O manager 
     10   USE lib_mpp         ! MPP library 
    1011 
    1112   IMPLICIT NONE 
     
    195196      thd_ice_alloc = MAXVAL( ierr ) 
    196197 
    197       IF( thd_ice_alloc /= 0 ) THEN 
    198          CALL ctl_warn( 'thd_ice_alloc: failed to allocate arrays.' ) 
    199       END IF 
     198      IF( thd_ice_alloc /= 0 )   CALL ctl_warn( 'thd_ice_alloc: failed to allocate arrays.' ) 
    200199      ! 
    201200   END FUNCTION thd_ice_alloc 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r2435 r2636  
    2121   !!   ssh_asm_inc  : Apply the SSH increment 
    2222   !!---------------------------------------------------------------------- 
    23    USE in_out_manager   ! I/O manager 
    2423   USE par_oce          ! Ocean space and time domain variables 
    2524   USE dom_oce          ! Ocean space and time domain 
     
    3130   USE asmpar           ! Parameters for the assmilation interface 
    3231   USE c1d              ! 1D initialization 
     32   USE in_out_manager   ! I/O manager 
     33   USE lib_mpp           ! MPP library 
    3334 
    3435   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90

    r2633 r2636  
    2121   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    2222   !! $Id$  
    23    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     23   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    2424   !!---------------------------------------------------------------------- 
    25  
    2625CONTAINS 
    2726 
     
    3635      !! 
    3736      !!---------------------------------------------------------------------- 
    38       USE in_out_manager, ONLY: ctl_stop 
    3937      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    4038      USE wrk_nemo, ONLY: zglam => wrk_2d_2, & 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DOM/domstp.F90

    r2528 r2636  
    88   !!   dom_stp        : ocean time domain initialization 
    99   !!---------------------------------------------------------------------- 
    10    !! History : 
    11    !!        !  90-10  (O. Marti)  Original code 
    12    !!        !  96-01  (G. Madec)  terrain following coordinates 
    13    !!   8.5  !  02-08  (G. Madec)  F90: Free form and module 
     10   !! History :  OPA  ! 1990-10  (O. Marti)  Original code 
     11   !!                 ! 1996-01  (G. Madec)  terrain following coordinates 
     12   !!   NEMO     1.0  ! 2002-08  (G. Madec)  F90: Free form and module 
    1413   !!---------------------------------------------------------------------- 
    15    !! * Modules used 
    16    USE oce             ! ocean dynamics and tracers 
    17    USE dom_oce         ! ocean space and time domain 
    18    USE in_out_manager  ! I/O manager 
     14   USE oce            ! ocean dynamics and tracers 
     15   USE dom_oce        ! ocean space and time domain 
     16   USE in_out_manager ! I/O manager 
     17   USE lib_mpp        ! MPP library 
    1918 
    2019   IMPLICIT NONE 
    2120   PRIVATE 
    2221 
    23    !! * routine accessibility 
    24    PUBLIC dom_stp        ! routine called by inidom.F90 
     22   PUBLIC   dom_stp   ! routine called by inidom.F90 
    2523 
    2624   !! * Substitutions 
     
    2927   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    3028   !! $Id$  
    31    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     29   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3230   !!---------------------------------------------------------------------- 
    33  
    3431CONTAINS 
    3532 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90

    r2633 r2636  
    4343   USE dynspg_ts       ! pressure gradient schemes 
    4444   USE traswp          ! Swap arrays                      (tra_swp routine) 
    45     
     45   USE lib_mpp         ! MPP library 
     46 
    4647   IMPLICIT NONE 
    4748   PRIVATE 
     
    5556   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    5657   !! $Id$ 
    57    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     58   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    5859   !!---------------------------------------------------------------------- 
    59  
    6060CONTAINS 
    6161 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DTA/dtasal.F90

    r2618 r2636  
    1818   USE oce             ! ocean dynamics and tracers 
    1919   USE dom_oce         ! ocean space and time domain 
     20   USE phycst          ! physical constants 
    2021   USE fldread         ! read input fields 
    2122   USE in_out_manager  ! I/O manager 
    22    USE phycst          ! physical constants 
     23   USE lib_mpp         ! MPP library 
    2324 
    2425   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DTA/dtatem.F90

    r2618 r2636  
    1818   USE oce             ! ocean dynamics and tracers 
    1919   USE dom_oce         ! ocean space and time domain 
     20   USE phycst          ! physical constants 
    2021   USE fldread         ! read input fields 
    2122   USE in_out_manager  ! I/O manager 
    22    USE phycst          ! physical constants 
     23   USE lib_mpp         ! MPP library 
    2324 
    2425   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90

    r2625 r2636  
    3131   USE in_out_manager  ! I/O manager 
    3232   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     33   USE lib_mpp         ! MPP library 
    3334 
    3435   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90

    r2625 r2636  
    1414   USE dom_oce         ! ocean space and time domain 
    1515   USE in_out_manager  ! I/O manager 
     16   USE lib_mpp         ! MPP library 
    1617 
    1718   USE dynadv_cen2     ! centred flux form advection      (dyn_adv_cen2 routine) 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90

    r2633 r2636  
    1818   USE trdmod         ! ocean dynamics trends 
    1919   USE in_out_manager ! I/O manager 
     20   USE lib_mpp         ! MPP library 
    2021   USE prtctl         ! Print control 
    2122 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90

    r2633 r2636  
    1616   USE oce            ! ocean dynamics and tracers 
    1717   USE dom_oce        ! ocean space and time domain 
    18    USE in_out_manager ! I/O manager 
    19    USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    2018   USE trdmod         ! ocean dynamics trends 
    2119   USE trdmod_oce     ! ocean variables trends 
     20   USE in_out_manager ! I/O manager 
    2221   USE prtctl         ! Print control 
     22   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     23   USE lib_mpp        ! MPP library 
    2324 
    2425   IMPLICIT NONE 
     
    9293      IF( wrk_in_use(3, 1,2,3,4,5,6,7) .OR. wrk_in_use(4, 1,2,3,4) ) THEN 
    9394         CALL ctl_stop('dyn_adv_ubs : requested workspace array unavailable')   ;   RETURN 
    94       END IF 
     95      ENDIF 
    9596 
    9697      zfu_t(:,:,:) = 0._wp 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90

    r2633 r2636  
    3636   USE prtctl          ! Print control 
    3737   USE lbclnk          ! lateral boundary condition  
     38   USE lib_mpp         ! MPP library 
    3839 
    3940   IMPLICIT NONE 
     
    8081      !! 
    8182      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
    82       !! 
    83       !!---------------------------------------------------------------------- 
    84       ! 
    85       IF(wrk_in_use(3, 1,2) ) THEN 
     83      !!---------------------------------------------------------------------- 
     84      ! 
     85      IF( wrk_in_use(3, 1,2) ) THEN 
    8686         CALL ctl_stop('dyn_hpg: requested workspace arrays are unavailable')   ;   RETURN 
    87       END IF 
     87      ENDIF 
    8888      ! 
    8989      IF( l_trddyn ) THEN                    ! Temporary saving of ua and va trends (l_trddyn) 
     
    111111         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    112112      ! 
    113       IF(wrk_not_released(3, 1,2) )   CALL ctl_stop('dyn_hpg: failed to release workspace arrays') 
     113      IF( wrk_not_released(3, 1,2) )   CALL ctl_stop('dyn_hpg: failed to release workspace arrays') 
    114114      ! 
    115115   END SUBROUTINE dyn_hpg 
     
    152152      ! 
    153153      IF( lk_vvl .AND. .NOT. ln_hpg_sco )   & 
    154          &   CALL ctl_stop( 'dyn_hpg_init : variable volume key_vvl require the standard jacobian formulation hpg_sco') 
     154         &   CALL ctl_stop('dyn_hpg_init : variable volume key_vvl require the standard jacobian formulation hpg_sco') 
    155155      ! 
    156156      !                               ! Set nhpg from ln_hpg_... flags 
     
    172172      IF( ln_hpg_djc )   ioptio = ioptio + 1 
    173173      IF( ln_hpg_rot )   ioptio = ioptio + 1 
    174       IF ( ioptio /= 1 )   CALL ctl_stop( ' NO or several hydrostatic pressure gradient options used' ) 
     174      IF( ioptio /= 1 )   CALL ctl_stop( 'NO or several hydrostatic pressure gradient options used' ) 
    175175      ! 
    176176   END SUBROUTINE dyn_hpg_init 
     
    619619      !!---------------------------------------------------------------------- 
    620620 
    621       IF(wrk_in_use(3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) ) THEN 
     621      IF( wrk_in_use(3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) ) THEN 
    622622         CALL ctl_stop('dyn:hpg_djc : requested workspace arrays unavailable')   ;   RETURN 
    623       END IF 
     623      ENDIF 
    624624 
    625625      IF( kt == nit000 ) THEN 
     
    819819      END DO 
    820820      ! 
    821       IF(wrk_not_released(3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) )   & 
    822          CALL ctl_stop('dyn:hpg_djc : failed to release workspace arrays.') 
     821      IF( wrk_not_released(3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) )   & 
     822         CALL ctl_stop('dyn:hpg_djc : failed to release workspace arrays') 
    823823      ! 
    824824   END SUBROUTINE hpg_djc 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90

    r2633 r2636  
    1414   USE oce             ! ocean dynamics and tracers 
    1515   USE dom_oce         ! ocean space and time domain 
    16    USE in_out_manager  ! I/O manager 
    1716   USE trdmod          ! ocean dynamics trends  
    1817   USE trdmod_oce      ! ocean variables trends 
     18   USE in_out_manager  ! I/O manager 
     19   USE lib_mpp         ! MPP library 
    1920   USE prtctl          ! Print control 
    2021 
     
    6162      !!---------------------------------------------------------------------- 
    6263 
    63       IF(wrk_in_use(3,1) ) THEN 
    64          CALL ctl_stop('dyn_key: requested workspace array is unavailable.')   ;   RETURN 
     64      IF( wrk_in_use(3,1) ) THEN 
     65         CALL ctl_stop('dyn_key: requested workspace array is unavailable')   ;   RETURN 
    6566      ENDIF 
    6667 
     
    135136         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    136137      ! 
    137       IF(wrk_not_released(3, 1) )   CALL ctl_stop('dyn_key: failed to release workspace array') 
     138      IF( wrk_not_released(3, 1) )   CALL ctl_stop('dyn_key: failed to release workspace array') 
    138139      ! 
    139140   END SUBROUTINE dyn_keg 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90

    r2633 r2636  
    4141   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    4242   !! $Id$ 
    43    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    44    !!---------------------------------------------------------------------- 
    45  
     43   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     44   !!---------------------------------------------------------------------- 
    4645CONTAINS 
    4746 
     
    5857      !!---------------------------------------------------------------------- 
    5958 
    60       IF(wrk_in_use(3, 1,2))THEN 
    61          CALL ctl_stop('dyn_ldf: requested workspace arrays unavailable.') 
    62          RETURN 
    63       END IF 
     59      IF( wrk_in_use(3, 1,2) ) THEN 
     60         CALL ctl_stop('dyn_ldf: requested workspace arrays unavailable.')   ;   RETURN 
     61      ENDIF 
    6462      ! 
    6563      IF( l_trddyn )   THEN                      ! temporary save of ta and sa trends 
     
    112110         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    113111      ! 
    114       IF(wrk_not_released(3, 1,2))THEN 
    115          CALL ctl_stop('dyn_ldf: failed to release workspace arrays.') 
    116       END IF 
     112      IF( wrk_not_released(3, 1,2) )   CALL ctl_stop('dyn_ldf: failed to release workspace arrays.') 
    117113      ! 
    118114   END SUBROUTINE dyn_ldf 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90

    r2633 r2636  
    2727   PRIVATE 
    2828 
    29    !! * Routine accessibility 
    30    PUBLIC dyn_ldf_bilap  ! called by step.F90 
     29   PUBLIC   dyn_ldf_bilap   ! called by step.F90 
    3130 
    3231   !! * Substitutions 
     
    7574      !!               mixing trend. 
    7675      !!---------------------------------------------------------------------- 
    77       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    78       USE wrk_nemo, ONLY: zcu => wrk_2d_1, zcv => wrk_2d_2   ! 3D workspace 
    79       USE wrk_nemo, ONLY: zuf => wrk_3d_1, zut => wrk_3d_2   ! 3D workspace 
    80       USE wrk_nemo, ONLY: zlu => wrk_3d_3, zlv => wrk_3d_4 
     76      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     77      USE wrk_nemo, ONLY:   zcu => wrk_2d_1, zcv => wrk_2d_2   ! 3D workspace 
     78      USE wrk_nemo, ONLY:   zuf => wrk_3d_1, zut => wrk_3d_2   ! 3D workspace 
     79      USE wrk_nemo, ONLY:   zlu => wrk_3d_3, zlv => wrk_3d_4 
    8180      ! 
    8281      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90

    r2633 r2636  
    2424   USE trdmod_oce      ! ocean variables trends 
    2525   USE ldfslp          ! iso-neutral slopes available 
     26   USE lib_mpp         ! MPP library 
    2627   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2728   USE prtctl          ! Print control 
     
    4142   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    4243   !! $Id$  
    43    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    44    !!---------------------------------------------------------------------- 
    45  
     44   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     45   !!---------------------------------------------------------------------- 
    4646CONTAINS 
    4747 
     
    5050      !!               ***  ROUTINE dyn_ldf_bilapg_alloc  *** 
    5151      !!---------------------------------------------------------------------- 
    52       ! 
    5352      ALLOCATE( zfuw(jpi,jpk) , zfvw (jpi,jpk) , zdiu(jpi,jpk) , zdiv (jpi,jpk) ,     & 
    5453         &      zdju(jpi,jpk) , zdj1u(jpi,jpk) , zdjv(jpi,jpk) , zdj1v(jpi,jpk) , STAT=dyn_ldf_bilapg_alloc) 
    5554         ! 
    5655      IF( dyn_ldf_bilapg_alloc /= 0 )   CALL ctl_warn('dyn_ldf_bilapg_alloc: failed to allocate arrays') 
    57       ! 
    5856   END FUNCTION dyn_ldf_bilapg_alloc 
    5957 
     
    9694 
    9795      IF( wrk_in_use(3, 1,2) ) THEN 
    98          CALL ctl_stop('dyn_ldf_bilapg: requested workspace arrays unavailable.')   ;   RETURN 
    99       END IF 
     96         CALL ctl_stop('dyn_ldf_bilapg: requested workspace arrays unavailable')   ;   RETURN 
     97      ENDIF 
    10098 
    10199      IF( kt == nit000 ) THEN 
     
    454452      !                                                ! =============== 
    455453 
    456       IF(wrk_not_released(2, 1,2,3,4,5,6,7,8))THEN 
    457          CALL ctl_stop('dyn:ldfguv : failed to release workspace arrays.') 
    458       END IF 
     454      IF( wrk_not_released(2, 1,2,3,4,5,6,7,8) )   CALL ctl_stop('dyn:ldfguv : failed to release workspace arrays') 
    459455      ! 
    460456   END SUBROUTINE ldfguv 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90

    r2633 r2636  
    2727   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2828   USE in_out_manager  ! I/O manager 
     29   USE lib_mpp         ! MPP library 
    2930   USE prtctl          ! Print control 
    3031 
     
    5354      !!                  ***  ROUTINE dyn_ldf_iso_alloc  *** 
    5455      !!---------------------------------------------------------------------- 
    55       ! 
    5656      ALLOCATE( zfuw(jpi,jpk) , zdiu(jpi,jpk) , zdju(jpi,jpk) , zdj1u(jpi,jpk) ,     &  
    5757         &      zfvw(jpi,jpk) , zdiv(jpi,jpk) , zdjv(jpi,jpk) , zdj1v(jpi,jpk) , STAT=dyn_ldf_iso_alloc) 
    5858         ! 
    5959      IF( dyn_ldf_iso_alloc /= 0 )   CALL ctl_warn('dyn_ldf_iso_alloc: array allocate failed.') 
    60       ! 
    6160   END FUNCTION dyn_ldf_iso_alloc 
    6261 
     
    121120 
    122121      IF( wrk_in_use(2, 1,2,3,4,5,6,7,8) ) THEN 
    123          CALL ctl_stop('dyn_ldf_iso: requested workspace arrays unavailable.')   ;   RETURN 
     122         CALL ctl_stop('dyn_ldf_iso: requested workspace arrays unavailable')   ;   RETURN 
    124123      END IF 
    125124 
     
    429428      !                                                ! =============== 
    430429 
    431       IF( wrk_not_released(2, 1,2,3,4,5,6,7,8))THEN 
    432          CALL ctl_stop('dyn_ldf_iso: failed to release workspace arrays.') 
    433       END IF 
    434  
     430      IF( wrk_not_released(2, 1,2,3,4,5,6,7,8) )   CALL ctl_stop('dyn_ldf_iso: failed to release workspace arrays') 
     431      ! 
    435432   END SUBROUTINE dyn_ldf_iso 
    436433 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r2633 r2636  
    3737   USE in_out_manager  ! I/O manager 
    3838   USE lbclnk          ! lateral boundary condition (or mpp link) 
     39   USE lib_mpp         ! MPP library 
    3940   USE prtctl          ! Print control 
    4041#if defined key_agrif 
     
    110111      !!---------------------------------------------------------------------- 
    111112 
    112       IF(wrk_in_use(2, 1,2,3))THEN 
    113          CALL ctl_stop('dyn_nxt: requested workspace arrays unavailable.') 
    114          RETURN 
    115       END IF 
     113      IF( wrk_in_use(2, 1,2,3) ) THEN 
     114         CALL ctl_stop('dyn_nxt: requested workspace arrays unavailable')   ;   RETURN 
     115      ENDIF 
    116116 
    117117      IF( kt == nit000 ) THEN 
     
    325325         &                       tab3d_2=vn, clinfo2=' Vn: '       , mask2=vmask ) 
    326326      !  
    327       IF(wrk_not_released(2, 1,2,3))THEN 
    328          CALL ctl_stop('dyn_nxt: failed to release workspace arrays.') 
    329       END IF 
     327      IF( wrk_not_released(2, 1,2,3) )   CALL ctl_stop('dyn_nxt: failed to release workspace arrays.') 
    330328      ! 
    331329   END SUBROUTINE dyn_nxt 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r2633 r2636  
    1414   USE oce            ! ocean dynamics and tracers variables 
    1515   USE dom_oce        ! ocean space and time domain variables 
     16   USE phycst         ! physical constants 
    1617   USE obc_oce        ! ocean open boundary conditions 
    1718   USE sbc_oce        ! surface boundary condition: ocean 
     
    2627   USE prtctl         ! Print control                     (prt_ctl routine) 
    2728   USE in_out_manager ! I/O manager 
    28    USE phycst         ! physical constants 
     29   USE lib_mpp        ! MPP library 
    2930 
    3031   IMPLICIT NONE 
     
    4243   !! NEMO/OPA 3.2 , LODYC-IPSL  (2009) 
    4344   !! $Id$  
    44    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    45    !!---------------------------------------------------------------------- 
    46  
     45   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     46   !!---------------------------------------------------------------------- 
    4747CONTAINS 
    4848 
     
    8383      !!---------------------------------------------------------------------- 
    8484 
    85       IF(wrk_in_use(3, 4,5))THEN 
    86          CALL ctl_stop('dyn_spg: requested workspace arrays unavailable.') 
    87          RETURN 
    88       END IF 
     85      IF( wrk_in_use(3, 4,5) ) THEN 
     86         CALL ctl_stop('dyn_spg: requested workspace arrays unavailable')   ;   RETURN 
     87      ENDIF 
    8988 
    9089!!gm NOTA BENE : the dynspg_exp and dynspg_ts should be modified so that  
     
    154153         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    155154      ! 
    156       IF(wrk_not_released(3, 4,5))THEN 
    157          CALL ctl_stop('dyn_spg: failed to release workspace arrays.') 
    158       END IF 
     155      IF( wrk_not_released(3, 4,5) )   CALL ctl_stop('dyn_spg: failed to release workspace arrays') 
    159156      ! 
    160157   END SUBROUTINE dyn_spg 
     
    181178 
    182179      !                        ! allocate dyn_spg arrays 
    183       IF( lk_dynspg_ts  .AND. dyn_spg_ts_alloc () /= 0 )   CALL ctl_stop('STOP', 'dyn_spg_init: failed to allocate ts  arrays') 
     180      IF( lk_dynspg_ts .AND.dyn_spg_ts_alloc() /= 0 )   CALL ctl_stop('STOP', 'dyn_spg_init: failed to allocate ts  arrays') 
    184181 
    185182      !                        ! Control of surface pressure gradient scheme options 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r2633 r2636  
    132132      !!---------------------------------------------------------------------- 
    133133 
    134       IF(wrk_in_use(2,  1, 2, 3, 4, 5, 6, 7, 8, 9,10,         & 
    135                           11,12,13,14,15,16,17,18,19,20,21 ) ) THEN 
    136          CALL ctl_stop( 'dyn_spg_ts: requested workspace arrays unavailable.' )   ;   RETURN 
     134      IF( wrk_in_use(2,  1, 2, 3, 4, 5, 6, 7, 8, 9,10,        & 
     135         &              11,12,13,14,15,16,17,18,19,20,21 ) ) THEN 
     136         CALL ctl_stop( 'dyn_spg_ts: requested workspace arrays unavailable' )   ;   RETURN 
    137137      END IF 
    138138 
     
    569569      ! 
    570570      ! 
    571       IF(wrk_not_released(2,  1, 2, 3, 4, 5, 6, 7, 8, 9,10,         & 
    572                               11,12,13,14,15,16,17,18,19,20,21))THEN 
     571      IF( wrk_not_released(2,  1, 2, 3, 4, 5, 6, 7, 8, 9,10,         & 
     572         &                    11,12,13,14,15,16,17,18,19,20,21) )    & 
    573573         CALL ctl_stop('dyn_spg_ts: failed to release workspace arrays.') 
    574       END IF 
    575574      ! 
    576575   END SUBROUTINE dyn_spg_ts 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r2633 r2636  
    3333   USE prtctl         ! Print control 
    3434   USE in_out_manager ! I/O manager 
     35   USE lib_mpp 
    3536 
    3637   IMPLICIT NONE 
     
    218219      !!---------------------------------------------------------------------- 
    219220 
    220       IF(wrk_in_use(2, 1,2,3))THEN 
    221          CALL ctl_stop('dyn:vor_ene: requested workspace arrays unavailable.') 
    222          RETURN 
    223       END IF 
     221      IF( wrk_in_use(2, 1,2,3) ) THEN 
     222         CALL ctl_stop('dyn:vor_ene: requested workspace arrays unavailable')   ;   RETURN 
     223      ENDIF 
    224224 
    225225      IF( kt == nit000 ) THEN 
     
    286286      END DO                                           !   End of slab 
    287287      !                                                ! =============== 
    288       IF(wrk_not_released(2, 1,2,3))THEN 
    289          CALL ctl_stop('dyn:vor_ene: failed to release workspace arrays.') 
    290       END IF 
     288      IF( wrk_not_released(2, 1,2,3) )   CALL ctl_stop('dyn:vor_ene: failed to release workspace arrays.') 
    291289      ! 
    292290   END SUBROUTINE vor_ene 
     
    335333      !!---------------------------------------------------------------------- 
    336334 
    337       IF(wrk_in_use(2, 4,5,6,7))THEN 
    338          CALL ctl_stop('dyn:vor_mix: requested workspace arrays unavailable.') 
    339          RETURN 
    340       END IF 
     335      IF( wrk_in_use(2, 4,5,6,7) ) THEN 
     336         CALL ctl_stop('dyn:vor_mix: requested workspace arrays unavailable')   ;   RETURN 
     337      ENDIF 
    341338 
    342339      IF( kt == nit000 ) THEN 
     
    410407      END DO                                           !   End of slab 
    411408      !                                                ! =============== 
    412       IF(wrk_not_released(2, 4,5,6,7))THEN 
    413          CALL ctl_stop('dyn:vor_mix: failed to release workspace arrays.') 
    414       END IF 
     409      IF( wrk_not_released(2, 4,5,6,7) )   CALL ctl_stop('dyn:vor_mix: failed to release workspace arrays') 
    415410      ! 
    416411   END SUBROUTINE vor_mix 
     
    456451      !!---------------------------------------------------------------------- 
    457452       
    458       IF(wrk_in_use(2, 4,5,6))THEN 
    459          CALL ctl_stop('dyn:vor_ens : requested workspace arrays unavailable.') 
    460          RETURN 
     453      IF( wrk_in_use(2, 4,5,6) ) THEN 
     454         CALL ctl_stop('dyn:vor_ens : requested workspace arrays unavailable')   ;   RETURN 
    461455      END IF 
    462456 
     
    532526      END DO                                           !   End of slab 
    533527      !                                                ! =============== 
    534       IF(wrk_not_released(2, 4,5,6))THEN 
    535          CALL ctl_stop('dyn:vor_ens : failed to release workspace arrays.') 
    536       END IF 
     528      IF( wrk_not_released(2, 4,5,6) )   CALL ctl_stop('dyn:vor_ens : failed to release workspace arrays') 
    537529      ! 
    538530   END SUBROUTINE vor_ens 
     
    580572      !!---------------------------------------------------------------------- 
    581573 
    582       IF(wrk_in_use(2, 1,2,3,4,5,6,7) .OR. wrk_in_use(3, 1) ) THEN 
     574      IF( wrk_in_use(2, 1,2,3,4,5,6,7) .OR. wrk_in_use(3, 1) ) THEN 
    583575         CALL ctl_stop('dyn:vor_een : requested workspace arrays unavailable.')   ;   RETURN 
    584       END IF 
     576      ENDIF 
    585577 
    586578      IF( kt == nit000 ) THEN 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90

    r2633 r2636  
    2020   USE trdmod         ! ocean dynamics trends  
    2121   USE in_out_manager ! I/O manager 
     22   USE lib_mpp         ! MPP library 
    2223   USE prtctl         ! Print control 
    2324 
     
    6667      !!---------------------------------------------------------------------- 
    6768       
    68       IF( wrk_in_use(2, 1)  .OR.    & 
    69           wrk_in_use(3, 1,2) )THEN 
    70          CALL ctl_stop('dyn_zad: requested workspace arrays unavailable.') 
    71          RETURN 
     69      IF( wrk_in_use(2, 1)     .OR.    & 
     70          wrk_in_use(3, 1,2) ) THEN 
     71         CALL ctl_stop('dyn_zad: requested workspace arrays unavailable')   ;   RETURN 
    7272      END IF 
    7373 
     
    126126         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    127127      ! 
    128       IF( wrk_not_released(2, 1)  .OR.    & 
    129           wrk_not_released(3, 1,2) )THEN 
    130          CALL ctl_stop('dyn_zad: failed to release workspace arrays.') 
    131       END IF 
    132  
     128      IF( wrk_not_released(2, 1)       .OR.    & 
     129          wrk_not_released(3, 1,2) )   CALL ctl_stop('dyn_zad: failed to release workspace arrays') 
     130      ! 
    133131   END SUBROUTINE dyn_zad 
    134132 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90

    r2633 r2636  
    2323   USE trdmod_oce      ! ocean variables trends 
    2424   USE in_out_manager  ! I/O manager 
     25   USE lib_mpp         ! MPP library 
    2526   USE prtctl          ! Print control 
    2627 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90

    r2633 r2636  
    1919   USE zdf_oce         ! ocean vertical physics 
    2020   USE sbc_oce         ! surface boundary condition: ocean 
     21   USE lib_mpp         ! MPP library 
    2122   USE in_out_manager  ! I/O manager 
     23   USE lib_mpp         ! MPP library 
    2224 
    2325   IMPLICIT NONE 
     
    6365      !!---------------------------------------------------------------------- 
    6466 
    65       IF( wrk_in_use(3, 1,2) )THEN 
    66          CALL ctl_stop('dyn_zdf_exp : requested workspace arrays unavailable.') 
    67          RETURN 
    68       END IF 
     67      IF( wrk_in_use(3, 1,2) ) THEN 
     68         CALL ctl_stop('dyn_zdf_exp: requested workspace arrays unavailable')   ;   RETURN 
     69      ENDIF 
    6970 
    7071      IF( kt == nit000 .AND. lwp ) THEN 
     
    119120      END DO                           ! End of time splitting 
    120121      ! 
    121       IF( wrk_not_released(3, 1,2) )THEN 
    122          CALL ctl_stop('dyn_zdf_exp : failed to release workspace arrays.') 
    123       END IF 
     122      IF( wrk_not_released(3, 1,2) )   CALL ctl_stop('dyn_zdf_exp : failed to release workspace arrays') 
    124123      ! 
    125124   END SUBROUTINE dyn_zdf_exp 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90

    r2633 r2636  
    2020   USE phycst          ! physical constants 
    2121   USE in_out_manager  ! I/O manager 
     22   USE lib_mpp         ! MPP library 
    2223 
    2324   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90

    r2633 r2636  
    2525   USE phycst 
    2626   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
     27   USE lib_mpp         ! MPP library 
    2728   USE obc_par         ! open boundary cond. parameter 
    2829   USE obc_oce 
     
    8687      !!---------------------------------------------------------------------- 
    8788 
    88       IF(wrk_in_use(2, 1,2))THEN 
    89          CALL ctl_stop('ssh_wzv: requested workspace arrays unavailable.') 
    90          RETURN 
    91       END IF 
     89      IF( wrk_in_use(2, 1,2) ) THEN 
     90         CALL ctl_stop('ssh_wzv: requested workspace arrays unavailable')   ;   RETURN 
     91      ENDIF 
    9292 
    9393      IF( kt == nit000 ) THEN 
     
    244244      IF(ln_ctl)   CALL prt_ctl( tab2d_1=ssha, clinfo1=' ssha  - : ', mask1=tmask, ovlap=1 ) 
    245245      ! 
    246       IF(wrk_not_released(2, 1,2))THEN 
    247          CALL ctl_stop('ssh_wzv: failed to release workspace arrays.') 
    248       END IF 
     246      IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('ssh_wzv: failed to release workspace arrays') 
    249247      ! 
    250248   END SUBROUTINE ssh_wzv 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90

    r2625 r2636  
    1313 
    1414   !!---------------------------------------------------------------------- 
    15    !!   ctl_stop   : update momentum and tracer Kz from a tke scheme 
    16    !!   ctl_warn   : initialization, namelist read, and parameters control 
    17    !!   getunit    : give the index of an unused logical unit 
    18    !!---------------------------------------------------------------------- 
    1915   USE par_oce       ! ocean parameter 
    2016   USE lib_print     ! formated print library 
    2117   USE nc4interface  ! NetCDF4 interface 
    22    USE lib_mpp       ! MPP library 
    2318 
    2419   IMPLICIT NONE 
     
    135130   !! $Id$ 
    136131   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    137    !!---------------------------------------------------------------------- 
    138 CONTAINS 
    139  
    140    SUBROUTINE ctl_stop( cd_stop, cd1, cd2, cd3, cd4, cd5 ,   & 
    141       &                          cd6, cd7, cd8, cd9, cd10 ) 
    142       !!---------------------------------------------------------------------- 
    143       !!                  ***  ROUTINE  stop_opa  *** 
    144       !! 
    145       !! ** Purpose :   print in ocean.outpput file a error message and  
    146       !!                increment the error number (nstop) by one. 
    147       !!---------------------------------------------------------------------- 
    148       CHARACTER(len=*), INTENT(in), OPTIONAL ::  cd_stop, cd1, cd2, cd3, cd4, cd5 
    149       CHARACTER(len=*), INTENT(in), OPTIONAL ::           cd6, cd7, cd8, cd9, cd10 
    150       !!---------------------------------------------------------------------- 
    151       ! 
    152       nstop = nstop + 1  
    153       IF(lwp) THEN 
    154          WRITE(numout,cform_err) 
    155          IF( PRESENT(cd1 ) ) WRITE(numout,*) cd1 
    156          IF( PRESENT(cd2 ) ) WRITE(numout,*) cd2 
    157          IF( PRESENT(cd3 ) ) WRITE(numout,*) cd3 
    158          IF( PRESENT(cd4 ) ) WRITE(numout,*) cd4 
    159          IF( PRESENT(cd5 ) ) WRITE(numout,*) cd5 
    160          IF( PRESENT(cd6 ) ) WRITE(numout,*) cd6 
    161          IF( PRESENT(cd7 ) ) WRITE(numout,*) cd7 
    162          IF( PRESENT(cd8 ) ) WRITE(numout,*) cd8 
    163          IF( PRESENT(cd9 ) ) WRITE(numout,*) cd9 
    164          IF( PRESENT(cd10) ) WRITE(numout,*) cd10 
    165       ENDIF 
    166                                CALL FLUSH(numout    ) 
    167       IF( numstp     /= -1 )   CALL FLUSH(numstp    ) 
    168       IF( numsol     /= -1 )   CALL FLUSH(numsol    ) 
    169       IF( numevo_ice /= -1 )   CALL FLUSH(numevo_ice) 
    170       ! 
    171       IF( PRESENT(cd_stop) ) THEN 
    172          IF( cd_stop == 'STOP' ) THEN 
    173             WRITE(numout,*)  
    174             WRITE(numout,*) 'huge E-R-R-O-R : immediate stop' 
    175             CALL mppstop() 
    176          ENDIF 
    177       ENDIF 
    178       ! 
    179    END SUBROUTINE ctl_stop 
    180  
    181  
    182    SUBROUTINE ctl_warn( cd1, cd2, cd3, cd4, cd5,   & 
    183       &                 cd6, cd7, cd8, cd9, cd10 ) 
    184       !!---------------------------------------------------------------------- 
    185       !!                  ***  ROUTINE  stop_warn  *** 
    186       !! 
    187       !! ** Purpose :   print in ocean.outpput file a error message and  
    188       !!                increment the warning number (nwarn) by one. 
    189       !!---------------------------------------------------------------------- 
    190       CHARACTER(len=*), INTENT(in), OPTIONAL ::  cd1, cd2, cd3, cd4, cd5 
    191       CHARACTER(len=*), INTENT(in), OPTIONAL ::  cd6, cd7, cd8, cd9, cd10 
    192       !!---------------------------------------------------------------------- 
    193       !  
    194       nwarn = nwarn + 1  
    195       IF(lwp) THEN 
    196          WRITE(numout,cform_war) 
    197          IF( PRESENT(cd1 ) ) WRITE(numout,*) cd1 
    198          IF( PRESENT(cd2 ) ) WRITE(numout,*) cd2 
    199          IF( PRESENT(cd3 ) ) WRITE(numout,*) cd3 
    200          IF( PRESENT(cd4 ) ) WRITE(numout,*) cd4 
    201          IF( PRESENT(cd5 ) ) WRITE(numout,*) cd5 
    202          IF( PRESENT(cd6 ) ) WRITE(numout,*) cd6 
    203          IF( PRESENT(cd7 ) ) WRITE(numout,*) cd7 
    204          IF( PRESENT(cd8 ) ) WRITE(numout,*) cd8 
    205          IF( PRESENT(cd9 ) ) WRITE(numout,*) cd9 
    206          IF( PRESENT(cd10) ) WRITE(numout,*) cd10 
    207       ENDIF 
    208       CALL FLUSH(numout) 
    209       ! 
    210    END SUBROUTINE ctl_warn 
    211  
    212  
    213    SUBROUTINE ctl_opn( knum, cdfile, cdstat, cdform, cdacce, klengh, kout, ldwp, karea ) 
    214       !!---------------------------------------------------------------------- 
    215       !!                  ***  ROUTINE ctl_opn  *** 
    216       !! 
    217       !! ** Purpose :   Open file and check if required file is available. 
    218       !! 
    219       !! ** Method  :   Fortan open 
    220       !!---------------------------------------------------------------------- 
    221       INTEGER          , INTENT(  out) ::   knum      ! logical unit to open 
    222       CHARACTER(len=*) , INTENT(in   ) ::   cdfile    ! file name to open 
    223       CHARACTER(len=*) , INTENT(in   ) ::   cdstat    ! disposition specifier 
    224       CHARACTER(len=*) , INTENT(in   ) ::   cdform    ! formatting specifier 
    225       CHARACTER(len=*) , INTENT(in   ) ::   cdacce    ! access specifier 
    226       INTEGER          , INTENT(in   ) ::   klengh    ! record length 
    227       INTEGER          , INTENT(in   ) ::   kout      ! number of logical units for write 
    228       LOGICAL          , INTENT(in   ) ::   ldwp      ! boolean term for print 
    229       INTEGER, OPTIONAL, INTENT(in   ) ::   karea     ! proc number 
    230       !! 
    231       CHARACTER(len=80) ::   clfile 
    232       INTEGER           ::   iost 
    233       !!---------------------------------------------------------------------- 
    234  
    235       ! adapt filename 
    236       ! ---------------- 
    237       clfile = TRIM(cdfile) 
    238       IF( PRESENT( karea ) ) THEN 
    239          IF( karea > 1 )   WRITE(clfile, "(a,'_',i4.4)") TRIM(clfile), karea-1 
    240       ENDIF 
    241 #if defined key_agrif 
    242       IF( .NOT. Agrif_Root() )   clfile = TRIM(Agrif_CFixed())//'_'//TRIM(clfile) 
    243       knum=Agrif_Get_Unit() 
    244 #else 
    245       knum=getunit() 
    246 #endif 
    247  
    248       iost=0 
    249       IF( cdacce(1:6) == 'DIRECT' )  THEN 
    250          OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat, RECL=klengh, ERR=100, IOSTAT=iost ) 
    251       ELSE 
    252          OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat             , ERR=100, IOSTAT=iost ) 
    253       ENDIF 
    254       IF( iost == 0 ) THEN 
    255          IF(ldwp) THEN 
    256             WRITE(kout,*) '     file   : ', clfile,' open ok' 
    257             WRITE(kout,*) '     unit   = ', knum 
    258             WRITE(kout,*) '     status = ', cdstat 
    259             WRITE(kout,*) '     form   = ', cdform 
    260             WRITE(kout,*) '     access = ', cdacce 
    261             WRITE(kout,*) 
    262          ENDIF 
    263       ENDIF 
    264 100   CONTINUE 
    265       IF( iost /= 0 ) THEN 
    266          IF(ldwp) THEN 
    267             WRITE(kout,*) 
    268             WRITE(kout,*) ' ===>>>> : bad opening file: ', clfile 
    269             WRITE(kout,*) ' =======   ===  ' 
    270             WRITE(kout,*) '           unit   = ', knum 
    271             WRITE(kout,*) '           status = ', cdstat 
    272             WRITE(kout,*) '           form   = ', cdform 
    273             WRITE(kout,*) '           access = ', cdacce 
    274             WRITE(kout,*) '           iostat = ', iost 
    275             WRITE(kout,*) '           we stop. verify the file ' 
    276             WRITE(kout,*) 
    277          ENDIF 
    278          STOP 'ctl_opn bad opening' 
    279       ENDIF 
    280        
    281    END SUBROUTINE ctl_opn 
    282  
    283  
    284    FUNCTION getunit() 
    285       !!---------------------------------------------------------------------- 
    286       !!                  ***  FUNCTION  getunit  *** 
    287       !! 
    288       !! ** Purpose :   return the index of an unused logical unit 
    289       !!---------------------------------------------------------------------- 
    290       INTEGER :: getunit 
    291       LOGICAL :: llopn  
    292       !!---------------------------------------------------------------------- 
    293       ! 
    294       getunit = 15   ! choose a unit that is big enough then it is not already used in NEMO 
    295       llopn = .TRUE. 
    296       DO WHILE( (getunit < 998) .AND. llopn ) 
    297          getunit = getunit + 1 
    298          INQUIRE( unit = getunit, opened = llopn ) 
    299       END DO 
    300       IF( (getunit == 999) .AND. llopn ) THEN 
    301          CALL ctl_stop( 'getunit: All logical units until 999 are used...' ) 
    302          getunit = -1 
    303       ENDIF 
    304       ! 
    305    END FUNCTION getunit 
    306  
    307132   !!===================================================================== 
    308133END MODULE in_out_manager 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90

    r2590 r2636  
    1818   !!   iom_rstput     : write a field in a restart file (interfaced to several routines) 
    1919   !!-------------------------------------------------------------------- 
    20    USE in_out_manager  ! I/O manager 
    2120   USE dom_oce         ! ocean space and time domain 
    2221   USE lbclnk          ! lateal boundary condition / mpp exchanges 
     
    2524   USE iom_nf90        ! NetCDF format with native NetCDF library 
    2625   USE iom_rstdimg     ! restarts access direct format "dimg" style... 
    27  
     26   USE in_out_manager  ! I/O manager 
     27   USE lib_mpp           ! MPP library 
    2828#if defined key_iomput 
    2929   USE sbc_oce, ONLY :   nn_fsbc         ! ocean space and time domain 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/iom_ioipsl.F90

    r2528 r2636  
    1818   !!   iom_rstput     : write a field in a restart file (interfaced to several routines) 
    1919   !!-------------------------------------------------------------------- 
    20    USE in_out_manager  ! I/O manager 
    2120   USE dom_oce         ! ocean space and time domain 
    2221   USE iom_def         ! iom variables definitions 
    2322   USE ioipsl          ! IOIPSL library 
     23   USE in_out_manager  ! I/O manager 
     24   USE lib_mpp         ! MPP library 
    2425 
    2526   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90

    r2528 r2636  
    1818   !!   iom_rstput     : write a field in a restart file (interfaced to several routines) 
    1919   !!-------------------------------------------------------------------- 
    20    USE in_out_manager  ! I/O manager 
    2120   USE dom_oce         ! ocean space and time domain 
    2221   USE lbclnk          ! lateal boundary condition / mpp exchanges 
    2322   USE iom_def         ! iom variables definitions 
    2423   USE netcdf          ! NetCDF library 
     24   USE in_out_manager  ! I/O manager 
     25   USE lib_mpp         ! MPP library 
    2526 
    2627   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/iom_rstdimg.F90

    r2590 r2636  
    1616   !!-------------------------------------------------------------------- 
    1717   USE in_out_manager  ! I/O manager 
     18   USE lib_mpp         ! MPP library 
    1819   USE dom_oce         ! ocean space and time domain 
    1920   USE lbclnk          ! lateal boundary condition / mpp exchanges 
     
    8283      llclobber = ldwrt .AND. ln_clobber 
    8384      ! get a free unit 
    84       idrst = getunit()  ! get a free logical unit for the restart file 
     85      idrst = get_unit()  ! get a free logical unit for the restart file 
    8586!!$#if defined key_agrif  
    8687!!$      idrst = Agrif_Get_Unit()       
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LBC/cla.F90

    r2442 r2636  
    3131   USE lib_mpp        ! distributed memory computing library 
    3232   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     33   USE lib_mpp        ! MPP library 
    3334 
    3435   IMPLICIT NONE 
     
    723724   !!   Default key                                            Dummy module 
    724725   !!---------------------------------------------------------------------- 
    725    USE in_out_manager ! I/O manager 
     726   USE lib_mpp, ONLY:   ctl_stop 
    726727CONTAINS 
    727728   SUBROUTINE cla_init 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90

    r2442 r2636  
    1212   !!   lbc_nfd_2d    : lateral boundary condition: North fold treatment for a 2D arrays   (lbc_nfd) 
    1313   !!---------------------------------------------------------------------- 
    14    USE oce            ! ocean dynamics and tracers    
    1514   USE dom_oce        ! ocean space and time domain  
    1615   USE in_out_manager ! I/O manager 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90

    r2633 r2636  
    1818   !!            3.2  !  2009  (R. Benshila) SHMEM suppression, north fold in lbc_nfd 
    1919   !!            3.2  !  2009  (O. Marti)    add mpp_ini_znl  
     20   !!            4.0  !  2011  (G. Madec)  move ctl_ routines from in_out_manager 
     21   !!---------------------------------------------------------------------- 
     22 
     23   !!---------------------------------------------------------------------- 
     24   !!   ctl_stop   : update momentum and tracer Kz from a tke scheme 
     25   !!   ctl_warn   : initialization, namelist read, and parameters control 
     26   !!   ctl_opn    : Open file and check if required file is available. 
     27   !!   get_unit    : give the index of an unused logical unit 
    2028   !!---------------------------------------------------------------------- 
    2129#if   defined key_mpp_mpi   
     
    4452   !!   mpp_lbc_north_e : variant of mpp_lbc_north for extra outer halo 
    4553   !!---------------------------------------------------------------------- 
    46    !! History :  OPA  ! 1994 (M. Guyon, J. Escobar, M. Imbard)  Original code 
    47    !!                 ! 1997  (A.M. Treguier)  SHMEM additions 
    48    !!                 ! 1998  (M. Imbard, J. Escobar, L. Colombet ) SHMEM and MPI 
    49    !!   NEMO     1.0  ! 2003  (J.-M. Molines, G. Madec)  F90, free form 
    50    !!                 ! 2004  (R. Bourdalle Badie)  isend option in mpi 
    51    !!                 ! 2005  (G. Madec, S. Masson)  npolj=5,6 F-point & ice cases 
    52    !!                 ! 2005  (R. Redler) Replacement of MPI_COMM_WORLD except for MPI_Abort 
    53    !!                 ! 2009  (R. Benshila) SHMEM suppression, north fold in lbc_nfd 
    54    !!---------------------------------------------------------------------- 
    5554   USE dom_oce        ! ocean space and time domain  
    5655   USE lbcnfd         ! north fold treatment 
     56   USE in_out_manager ! I/O manager 
    5757 
    5858   IMPLICIT NONE 
    5959   PRIVATE 
    6060    
     61   PUBLIC   ctl_stop, ctl_warn, get_unit, ctl_opn 
    6162   PUBLIC   mynode, mppstop, mppsync, mpp_comm_free 
    6263   PUBLIC   mpp_ini_north, mpp_lbc_north, mpp_lbc_north_e 
     
    116117# endif 
    117118 
    118    CHARACTER(lc) ::   cform_err = "(/,' ===>>> : E R R O R',     /,'         ===========',/)"       !: 
    119    CHARACTER(lc) ::   cform_war = "(/,' ===>>> : W A R N I N G', /,'         ===============',/)"   !: 
    120  
    121119   ! variables used in case of sea-ice 
    122120   INTEGER, PUBLIC ::   ncomm_ice       !: communicator made by the processors with sea-ice 
     
    24682466   !!   Default case:            Dummy module        share memory computing 
    24692467   !!---------------------------------------------------------------------- 
     2468   USE in_out_manager 
    24702469 
    24712470   INTERFACE mpp_sum 
     
    24882487   END INTERFACE 
    24892488 
    2490  
    24912489   LOGICAL, PUBLIC, PARAMETER ::   lk_mpp = .FALSE.      !: mpp flag 
    24922490   INTEGER :: ncomm_ice 
    2493  
     2491   !!---------------------------------------------------------------------- 
    24942492CONTAINS 
    24952493 
     
    26662664   END SUBROUTINE mpp_comm_free 
    26672665#endif 
     2666 
     2667   !!---------------------------------------------------------------------- 
     2668   !!   All cases:         ctl_stop, ctl_warn, get_unit, ctl_opn   routines 
     2669   !!---------------------------------------------------------------------- 
     2670 
     2671   SUBROUTINE ctl_stop( cd1, cd2, cd3, cd4, cd5 ,   & 
     2672      &                 cd6, cd7, cd8, cd9, cd10 ) 
     2673      !!---------------------------------------------------------------------- 
     2674      !!                  ***  ROUTINE  stop_opa  *** 
     2675      !! 
     2676      !! ** Purpose :   print in ocean.outpput file a error message and  
     2677      !!                increment the error number (nstop) by one. 
     2678      !!---------------------------------------------------------------------- 
     2679      CHARACTER(len=*), INTENT(in), OPTIONAL ::  cd1, cd2, cd3, cd4, cd5 
     2680      CHARACTER(len=*), INTENT(in), OPTIONAL ::  cd6, cd7, cd8, cd9, cd10 
     2681      !!---------------------------------------------------------------------- 
     2682      ! 
     2683      nstop = nstop + 1  
     2684      IF(lwp) THEN 
     2685         WRITE(numout,cform_err) 
     2686         IF( PRESENT(cd1 ) )   WRITE(numout,*) cd1 
     2687         IF( PRESENT(cd2 ) )   WRITE(numout,*) cd2 
     2688         IF( PRESENT(cd3 ) )   WRITE(numout,*) cd3 
     2689         IF( PRESENT(cd4 ) )   WRITE(numout,*) cd4 
     2690         IF( PRESENT(cd5 ) )   WRITE(numout,*) cd5 
     2691         IF( PRESENT(cd6 ) )   WRITE(numout,*) cd6 
     2692         IF( PRESENT(cd7 ) )   WRITE(numout,*) cd7 
     2693         IF( PRESENT(cd8 ) )   WRITE(numout,*) cd8 
     2694         IF( PRESENT(cd9 ) )   WRITE(numout,*) cd9 
     2695         IF( PRESENT(cd10) )   WRITE(numout,*) cd10 
     2696      ENDIF 
     2697                               CALL FLUSH(numout    ) 
     2698      IF( numstp     /= -1 )   CALL FLUSH(numstp    ) 
     2699      IF( numsol     /= -1 )   CALL FLUSH(numsol    ) 
     2700      IF( numevo_ice /= -1 )   CALL FLUSH(numevo_ice) 
     2701      ! 
     2702      IF( cd1 == 'STOP' ) THEN 
     2703         IF(lwp) WRITE(numout,*)  'huge E-R-R-O-R : immediate stop' 
     2704         CALL mppstop() 
     2705      ENDIF 
     2706      ! 
     2707   END SUBROUTINE ctl_stop 
     2708 
     2709 
     2710   SUBROUTINE ctl_warn( cd1, cd2, cd3, cd4, cd5,   & 
     2711      &                 cd6, cd7, cd8, cd9, cd10 ) 
     2712      !!---------------------------------------------------------------------- 
     2713      !!                  ***  ROUTINE  stop_warn  *** 
     2714      !! 
     2715      !! ** Purpose :   print in ocean.outpput file a error message and  
     2716      !!                increment the warning number (nwarn) by one. 
     2717      !!---------------------------------------------------------------------- 
     2718      CHARACTER(len=*), INTENT(in), OPTIONAL ::  cd1, cd2, cd3, cd4, cd5 
     2719      CHARACTER(len=*), INTENT(in), OPTIONAL ::  cd6, cd7, cd8, cd9, cd10 
     2720      !!---------------------------------------------------------------------- 
     2721      !  
     2722      nwarn = nwarn + 1  
     2723      IF(lwp) THEN 
     2724         WRITE(numout,cform_war) 
     2725         IF( PRESENT(cd1 ) ) WRITE(numout,*) cd1 
     2726         IF( PRESENT(cd2 ) ) WRITE(numout,*) cd2 
     2727         IF( PRESENT(cd3 ) ) WRITE(numout,*) cd3 
     2728         IF( PRESENT(cd4 ) ) WRITE(numout,*) cd4 
     2729         IF( PRESENT(cd5 ) ) WRITE(numout,*) cd5 
     2730         IF( PRESENT(cd6 ) ) WRITE(numout,*) cd6 
     2731         IF( PRESENT(cd7 ) ) WRITE(numout,*) cd7 
     2732         IF( PRESENT(cd8 ) ) WRITE(numout,*) cd8 
     2733         IF( PRESENT(cd9 ) ) WRITE(numout,*) cd9 
     2734         IF( PRESENT(cd10) ) WRITE(numout,*) cd10 
     2735      ENDIF 
     2736      CALL FLUSH(numout) 
     2737      ! 
     2738   END SUBROUTINE ctl_warn 
     2739 
     2740 
     2741   SUBROUTINE ctl_opn( knum, cdfile, cdstat, cdform, cdacce, klengh, kout, ldwp, karea ) 
     2742      !!---------------------------------------------------------------------- 
     2743      !!                  ***  ROUTINE ctl_opn  *** 
     2744      !! 
     2745      !! ** Purpose :   Open file and check if required file is available. 
     2746      !! 
     2747      !! ** Method  :   Fortan open 
     2748      !!---------------------------------------------------------------------- 
     2749      INTEGER          , INTENT(  out) ::   knum      ! logical unit to open 
     2750      CHARACTER(len=*) , INTENT(in   ) ::   cdfile    ! file name to open 
     2751      CHARACTER(len=*) , INTENT(in   ) ::   cdstat    ! disposition specifier 
     2752      CHARACTER(len=*) , INTENT(in   ) ::   cdform    ! formatting specifier 
     2753      CHARACTER(len=*) , INTENT(in   ) ::   cdacce    ! access specifier 
     2754      INTEGER          , INTENT(in   ) ::   klengh    ! record length 
     2755      INTEGER          , INTENT(in   ) ::   kout      ! number of logical units for write 
     2756      LOGICAL          , INTENT(in   ) ::   ldwp      ! boolean term for print 
     2757      INTEGER, OPTIONAL, INTENT(in   ) ::   karea     ! proc number 
     2758      !! 
     2759      CHARACTER(len=80) ::   clfile 
     2760      INTEGER           ::   iost 
     2761      !!---------------------------------------------------------------------- 
     2762 
     2763      ! adapt filename 
     2764      ! ---------------- 
     2765      clfile = TRIM(cdfile) 
     2766      IF( PRESENT( karea ) ) THEN 
     2767         IF( karea > 1 )   WRITE(clfile, "(a,'_',i4.4)") TRIM(clfile), karea-1 
     2768      ENDIF 
     2769#if defined key_agrif 
     2770      IF( .NOT. Agrif_Root() )   clfile = TRIM(Agrif_CFixed())//'_'//TRIM(clfile) 
     2771      knum=Agrif_Get_Unit() 
     2772#else 
     2773      knum=get_unit() 
     2774#endif 
     2775 
     2776      iost=0 
     2777      IF( cdacce(1:6) == 'DIRECT' )  THEN 
     2778         OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat, RECL=klengh, ERR=100, IOSTAT=iost ) 
     2779      ELSE 
     2780         OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat             , ERR=100, IOSTAT=iost ) 
     2781      ENDIF 
     2782      IF( iost == 0 ) THEN 
     2783         IF(ldwp) THEN 
     2784            WRITE(kout,*) '     file   : ', clfile,' open ok' 
     2785            WRITE(kout,*) '     unit   = ', knum 
     2786            WRITE(kout,*) '     status = ', cdstat 
     2787            WRITE(kout,*) '     form   = ', cdform 
     2788            WRITE(kout,*) '     access = ', cdacce 
     2789            WRITE(kout,*) 
     2790         ENDIF 
     2791      ENDIF 
     2792100   CONTINUE 
     2793      IF( iost /= 0 ) THEN 
     2794         IF(ldwp) THEN 
     2795            WRITE(kout,*) 
     2796            WRITE(kout,*) ' ===>>>> : bad opening file: ', clfile 
     2797            WRITE(kout,*) ' =======   ===  ' 
     2798            WRITE(kout,*) '           unit   = ', knum 
     2799            WRITE(kout,*) '           status = ', cdstat 
     2800            WRITE(kout,*) '           form   = ', cdform 
     2801            WRITE(kout,*) '           access = ', cdacce 
     2802            WRITE(kout,*) '           iostat = ', iost 
     2803            WRITE(kout,*) '           we stop. verify the file ' 
     2804            WRITE(kout,*) 
     2805         ENDIF 
     2806         STOP 'ctl_opn bad opening' 
     2807      ENDIF 
     2808       
     2809   END SUBROUTINE ctl_opn 
     2810 
     2811 
     2812   INTEGER FUNCTION get_unit() 
     2813      !!---------------------------------------------------------------------- 
     2814      !!                  ***  FUNCTION  get_unit  *** 
     2815      !! 
     2816      !! ** Purpose :   return the index of an unused logical unit 
     2817      !!---------------------------------------------------------------------- 
     2818      LOGICAL :: llopn  
     2819      !!---------------------------------------------------------------------- 
     2820      ! 
     2821      get_unit = 15   ! choose a unit that is big enough then it is not already used in NEMO 
     2822      llopn = .TRUE. 
     2823      DO WHILE( (get_unit < 998) .AND. llopn ) 
     2824         get_unit = get_unit + 1 
     2825         INQUIRE( unit = get_unit, opened = llopn ) 
     2826      END DO 
     2827      IF( (get_unit == 999) .AND. llopn ) THEN 
     2828         CALL ctl_stop( 'get_unit: All logical units until 999 are used...' ) 
     2829         get_unit = -1 
     2830      ENDIF 
     2831      ! 
     2832   END FUNCTION get_unit 
     2833 
    26682834   !!---------------------------------------------------------------------- 
    26692835END MODULE lib_mpp 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_oce.F90

    r2618 r2636  
    88   USE par_oce        ! ocean parameters 
    99   USE in_out_manager ! I/O manager 
     10   USE lib_mpp         ! MPP library 
    1011 
    1112   IMPLICIT NONE 
     
    4546      !!                 ***  FUNCTION ldfdyn_oce_alloc  *** 
    4647      !!---------------------------------------------------------------------- 
     48      ldfdyn_oce_alloc = 0 
    4749#if defined key_dynldf_c3d 
    4850      ALLOCATE( ahm1(jpi,jpj,jpk) , ahm2(jpi,jpj,jpk) , ahm3(jpi,jpj,jpk) , ahm4(jpi,jpj,jpk) , STAT=ldfdyn_oce_alloc ) 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_oce.F90

    r2618 r2636  
    88   USE par_oce        ! ocean parameters 
    99   USE in_out_manager ! I/O manager 
     10   USE lib_mpp         ! MPP library 
    1011 
    1112   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90

    r2633 r2636  
    1818   USE phycst          ! physical constants 
    1919   USE in_out_manager  ! I/O manager 
     20   USE lib_mpp         ! MPP library 
    2021 
    2122   IMPLICIT NONE 
     
    6465      !! References :   Shine and Hendersson-Sellers 1985, JGR, 90(D1), 2243-2250. 
    6566      !!---------------------------------------------------------------------- 
    66       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, llwrk_in_use, llwrk_not_released 
    67       USE wrk_nemo, ONLY: wrk_3d_6, wrk_3d_7    ! 3D workspace 
     67      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released, llwrk_in_use, llwrk_not_released 
     68      USE wrk_nemo, ONLY:   wrk_3d_6, wrk_3d_7    ! 3D workspace 
    6869      !! 
    6970      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pt_ice      !  ice surface temperature (Kelvin) 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/cpl_oasis4.F90

    r2633 r2636  
    2020   !!   cpl_prism_init     : initialization of coupled mode communication 
    2121   !!   cpl_prism_define   : definition of grid and fields 
    22    !!   cpl_prism_snd     : snd out fields in coupled mode 
    23    !!   cpl_prism_rcv     : receive fields in coupled mode 
    24    !!   cpl_prism_update_time   : update date sent to Oasis 
     22   !!   cpl_prism_snd      : snd out fields in coupled mode 
     23   !!   cpl_prism_rcv      : receive fields in coupled mode 
     24   !!   cpl_prism_update_time : update date sent to Oasis 
    2525   !!   cpl_prism_finalize : finalize the coupled mode communication 
    2626   !!---------------------------------------------------------------------- 
    27    USE prism              ! OASIS4 prism module 
    28    USE par_oce                      ! ocean parameters 
    29    USE dom_oce                      ! ocean space and time domain 
    30    USE domwri                       ! ocean space and time domain 
    31    USE in_out_manager               ! I/O manager 
    32    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     27   USE prism            ! OASIS4 prism module 
     28   USE par_oce          ! ocean parameters 
     29   USE dom_oce          ! ocean space and time domain 
     30   USE domwri           ! ocean space and time domain 
     31   USE in_out_manager   ! I/O manager 
     32   USE lbclnk           ! ocean lateral boundary conditions (or mpp link) 
     33   USE lib_mpp          ! MPP library 
    3334 
    3435   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r2633 r2636  
    1515   USE oce             ! ocean dynamics and tracers 
    1616   USE dom_oce         ! ocean space and time domain 
    17    USE ioipsl, ONLY :   ymds2ju, ju2ymds   ! for calendar 
    1817   USE phycst          ! ??? 
    1918   USE in_out_manager  ! I/O manager 
    2019   USE iom             ! I/O manager library 
    2120   USE geo2ocean       ! for vector rotation on to model grid 
     21   USE lib_mpp         ! MPP library 
     22   USE ioipsl, ONLY :   ymds2ju, ju2ymds   ! for calendar 
    2223 
    2324   IMPLICIT NONE 
     
    391392         CALL fld_clopn( sdjf, iyear, imonth, iday ) 
    392393      ENDIF  
    393  
     394      ! 
    394395   END SUBROUTINE fld_init 
    395396 
     
    804805      !!                file, restructuring as required 
    805806      !!---------------------------------------------------------------------- 
    806       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 
    807       USE wrk_nemo, ONLY: data_tmp => wrk_2d_1 
    808       USE wrk_nemo, ONLY: data_src => iwrk_2d_1 
     807      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 
     808      USE wrk_nemo, ONLY:   data_tmp =>  wrk_2d_1     ! 2D real    workspace 
     809      USE wrk_nemo, ONLY:   data_src => iwrk_2d_1     ! 2D integer workspace 
    809810      !! 
    810811      TYPE( FLD ), INTENT(in) ::   sd   ! field with name of weights file 
     
    822823      IF(  wrk_in_use(2, 1)  .OR.  iwrk_in_use(2,1) ) THEN 
    823824         CALL ctl_stop('fld_weights: requested workspace arrays are unavailable.')   ;   RETURN 
    824       END IF 
     825      ENDIF 
    825826      ! 
    826827      IF( nxt_wgt > tot_wgts ) THEN 
     
    934935      ENDIF 
    935936 
    936       IF( wrk_not_released(2, 1) .OR.    & 
     937      IF(  wrk_not_released(2, 1) .OR.    & 
    937938          iwrk_not_released(2, 1)   )   CALL ctl_stop('fld_weights: failed to release workspace arrays') 
    938939      ! 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/geo2ocean.F90

    r2631 r2636  
    4646   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    4747   !! $Id$  
    48    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     48   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    4949   !!---------------------------------------------------------------------- 
    50  
    5150CONTAINS 
    5251 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90

    r2620 r2636  
    2020   USE lib_fortran     ! distribued memory computing library 
    2121   USE iom             ! IOM library 
     22   USE lib_mpp         ! MPP library 
    2223   USE restart         ! ocean restart 
    2324 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90

    r2633 r2636  
    232232      !!--------------------------------------------------------------------- 
    233233 
    234       IF(wrk_in_use(3, 1,2,3))THEN 
    235          CALL ctl_stop('blk_oce_clio: requested workspace arrays are unavailable.') 
    236          RETURN 
    237       END IF 
     234      IF( wrk_in_use(3, 1,2,3) ) THEN 
     235         CALL ctl_stop('blk_oce_clio: requested workspace arrays are unavailable')   ;   RETURN 
     236      ENDIF 
    238237 
    239238      zpatm = 101000.      ! atmospheric pressure  (assumed constant here) 
     
    386385      ENDIF 
    387386 
    388       IF(wrk_not_released(3, 1,2,3))THEN 
    389          CALL ctl_stop('blk_oce_clio: failed to release workspace arrays.') 
    390       END IF 
    391  
     387      IF( wrk_not_released(3, 1,2,3) )   CALL ctl_stop('blk_oce_clio: failed to release workspace arrays') 
     388      ! 
    392389   END SUBROUTINE blk_oce_clio 
    393390 
     
    420417      !! 
    421418      !!---------------------------------------------------------------------- 
    422       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    423       USE wrk_nemo, ONLY:  ztatm => wrk_2d_1   ! Tair in Kelvin 
    424       USE wrk_nemo, ONLY:  zqatm => wrk_2d_2   ! specific humidity 
    425       USE wrk_nemo, ONLY: zevsqr => wrk_2d_3   ! vapour pressure square-root 
    426       USE wrk_nemo, ONLY:  zrhoa => wrk_2d_4   ! air density 
    427       USE wrk_nemo, ONLY: wrk_3d_1, wrk_3d_2 
     419      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     420      USE wrk_nemo, ONLY:   ztatm => wrk_2d_1   ! Tair in Kelvin 
     421      USE wrk_nemo, ONLY:   zqatm => wrk_2d_2   ! specific humidity 
     422      USE wrk_nemo, ONLY:   zevsqr => wrk_2d_3   ! vapour pressure square-root 
     423      USE wrk_nemo, ONLY:   zrhoa => wrk_2d_4   ! air density 
     424      USE wrk_nemo, ONLY:   wrk_3d_1 , wrk_3d_2 
    428425      !! 
    429426      REAL(wp), INTENT(in   ), DIMENSION(:,:,:)   ::   pst      ! ice surface temperature                   [Kelvin] 
     
    457454      !!--------------------------------------------------------------------- 
    458455 
    459       IF( (wrk_in_use(2, 1,2,3,4)) .OR. (wrk_in_use(3, 1,2)) )THEN 
    460          CALL ctl_stop('blk_ice_clio: requested workspace arrays are unavailable.') 
    461          RETURN 
     456      IF(  wrk_in_use(2, 1,2,3,4)  .OR.  wrk_in_use(3, 1,2)  ) THEN 
     457         CALL ctl_stop('blk_ice_clio: requested workspace arrays are unavailable')   ;   RETURN 
    462458      ELSE IF(pdim > jpk)THEN 
    463459         CALL ctl_stop('blk_ice_clio: too many ice levels to use wrk_nemo 3D workspaces.') 
     
    637633      ENDIF 
    638634 
    639       IF( (wrk_not_released(2, 1,2,3,4)) .OR. (wrk_not_released(3, 1,2)) )THEN 
     635      IF( wrk_not_released(2, 1,2,3,4)  .OR.   & 
     636          wrk_not_released(3, 1,2)        )    & 
    640637         CALL ctl_stop('blk_ice_clio: failed to release workspace arrays.') 
    641       END IF 
    642  
     638      ! 
    643639   END SUBROUTINE blk_ice_clio 
    644640 
     
    654650      !!               - also initialise sbudyko and stauc once for all  
    655651      !!---------------------------------------------------------------------- 
    656       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    657       USE wrk_nemo, ONLY:   zev => wrk_2d_1                  ! vapour pressure 
    658       USE wrk_nemo, ONLY: zdlha => wrk_2d_2, zlsrise => wrk_2d_3, zlsset => wrk_2d_4  
    659       USE wrk_nemo, ONLY:   zps => wrk_2d_5, zpc => wrk_2d_6 ! sine (cosine) of latitude per sine (cosine) of solar declination  
     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  
    660656      !! 
    661657      REAL(wp), INTENT(  out), DIMENSION(jpi,jpj)     ::   pqsr_oce    ! shortwave radiation  over the ocean 
     
    679675      !!--------------------------------------------------------------------- 
    680676 
    681       IF(wrk_in_use(2, 1,2,3,4,5,6))THEN 
    682          CALL ctl_stop('blk_clio_qsr_oce: requested workspace arrays unavailable.') 
    683          RETURN 
     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 
    684679      END IF 
    685680 
     
    796791      END DO 
    797792 
    798       IF(wrk_not_released(2, 1,2,3,4,5,6))THEN 
    799          CALL ctl_stop('blk_clio_qsr_oce: failed to release workspace arrays.') 
    800       END IF 
    801  
     793      IF( wrk_not_released(2, 1,2,3,4,5,6) )   CALL ctl_stop('blk_clio_qsr_oce: failed to release workspace arrays') 
     794      ! 
    802795   END SUBROUTINE blk_clio_qsr_oce 
    803796 
     
    813806      !!               - also initialise sbudyko and stauc once for all  
    814807      !!---------------------------------------------------------------------- 
    815       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    816       USE wrk_nemo, ONLY: zev => wrk_2d_1         ! vapour pressure 
    817       USE wrk_nemo, ONLY: zdlha => wrk_2d_2       ! 2D workspace 
    818       USE wrk_nemo, ONLY: zlsrise => wrk_2d_3     ! 2D workspace 
    819       USE wrk_nemo, ONLY: zlsset => wrk_2d_4      ! 2D workspace 
    820       USE wrk_nemo, ONLY: zps => wrk_2d_5, zpc => wrk_2d_6   ! sine (cosine) of latitude per sine (cosine) of solar declination  
     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  
    821814      !! 
    822815      REAL(wp), INTENT(in   ), DIMENSION(:,:,:) ::   pa_ice_cs   ! albedo of ice under clear sky 
     
    839832      !!--------------------------------------------------------------------- 
    840833 
    841       IF(wrk_in_use(2, 1,2,3,4,5,6))THEN 
    842          CALL ctl_stop('blk_clio_qsr_ice: requested workspace arrays unavailable.') 
    843          RETURN 
    844       END IF 
     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 
    845837 
    846838      ijpl = SIZE(pqsr_ice, 3 )      ! number of ice categories 
     
    945937      END DO 
    946938      ! 
    947       IF(wrk_not_released(2, 1,2,3,4,5,6))THEN 
    948          CALL ctl_stop('blk_clio_qsr_ice: failed to release workspace arrays.') 
    949       END IF 
     939      IF( wrk_not_released(2, 1,2,3,4,5,6) )   CALL ctl_stop('blk_clio_qsr_ice: failed to release workspace arrays') 
    950940      ! 
    951941   END SUBROUTINE blk_clio_qsr_ice 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r2633 r2636  
    1111   !!                           -  Implement reading of 6-hourly fields    
    1212   !!            3.0  !  2006-06  (G. Madec) sbc rewritting    
     13   !!             -   !  2006-12  (L. Brodeau) Original code for TURB_CORE_2Z 
    1314   !!            3.2  !  2009-04  (B. Lemaire)  Introduce iom_put 
    1415   !!            3.3  !  2010-10  (S. Masson)  add diurnal cycle 
     
    208209      !!  ** Nota  :   sf has to be a dummy argument for AGRIF on NEC 
    209210      !!--------------------------------------------------------------------- 
    210       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    211       USE wrk_nemo, ONLY: zwnd_i => wrk_2d_1, zwnd_j  => wrk_2d_2   ! wind speed components at T-point 
    212       USE wrk_nemo, ONLY: zqsatw => wrk_2d_3           ! specific humidity at pst 
    213       USE wrk_nemo, ONLY: zqlw => wrk_2d_4, zqsb => wrk_2d_5       ! long wave and sensible heat fluxes 
    214       USE wrk_nemo, ONLY: zqla => wrk_2d_6, zevap => wrk_2d_7      ! latent heat fluxes and evaporation 
    215       USE wrk_nemo, ONLY:    Cd => wrk_2d_8           ! transfer coefficient for momentum      (tau) 
    216       USE wrk_nemo, ONLY:    Ch => wrk_2d_9           ! transfer coefficient for sensible heat (Q_sens) 
    217       USE wrk_nemo, ONLY:    Ce => wrk_2d_10          ! transfer coefficient for evaporation   (Q_lat) 
    218       USE wrk_nemo, ONLY:   zst => wrk_2d_11          ! surface temperature in Kelvin 
    219       USE wrk_nemo, ONLY: zt_zu => wrk_2d_12          ! air temperature at wind speed height 
    220       USE wrk_nemo, ONLY: zq_zu => wrk_2d_13          ! air spec. hum.  at wind speed height 
    221       !! 
    222       TYPE(fld), INTENT(in), DIMENSION(:)       ::   sf    ! input data 
    223       REAL(wp),  INTENT(in), DIMENSION(:,:) ::   pst   ! surface temperature                      [Celcius] 
    224       REAL(wp),  INTENT(in), DIMENSION(:,:) ::   pu    ! surface current at U-point (i-component) [m/s] 
    225       REAL(wp),  INTENT(in), DIMENSION(:,:) ::   pv    ! surface current at V-point (j-component) [m/s] 
    226  
    227       INTEGER  ::   ji, jj     ! dummy loop indices 
    228       REAL(wp) ::   zcoef_qsatw 
    229       REAL(wp) ::   zztmp                                 ! temporary variable 
     211      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     212      USE wrk_nemo, ONLY:   zwnd_i => wrk_2d_1  , zwnd_j => wrk_2d_2      ! wind speed components at T-point 
     213      USE wrk_nemo, ONLY:   zqsatw => wrk_2d_3           ! specific humidity at pst 
     214      USE wrk_nemo, ONLY:   zqlw   => wrk_2d_4  , zqsb   => wrk_2d_5      ! long wave and sensible heat fluxes 
     215      USE wrk_nemo, ONLY:   zqla   => wrk_2d_6  , zevap  => wrk_2d_7      ! latent heat fluxes and evaporation 
     216      USE wrk_nemo, ONLY:   Cd     => wrk_2d_8           ! transfer coefficient for momentum      (tau) 
     217      USE wrk_nemo, ONLY:   Ch     => wrk_2d_9           ! transfer coefficient for sensible heat (Q_sens) 
     218      USE wrk_nemo, ONLY:   Ce     => wrk_2d_10          ! transfer coefficient for evaporation   (Q_lat) 
     219      USE wrk_nemo, ONLY:   zst    => wrk_2d_11          ! surface temperature in Kelvin 
     220      USE wrk_nemo, ONLY:   zt_zu  => wrk_2d_12          ! air temperature at wind speed height 
     221      USE wrk_nemo, ONLY:   zq_zu  => wrk_2d_13          ! air spec. hum.  at wind speed height 
     222      ! 
     223      TYPE(fld), INTENT(in), DIMENSION(:)   ::   sf    ! input data 
     224      REAL(wp) , INTENT(in), DIMENSION(:,:) ::   pst   ! surface temperature                      [Celcius] 
     225      REAL(wp) , INTENT(in), DIMENSION(:,:) ::   pu    ! surface current at U-point (i-component) [m/s] 
     226      REAL(wp) , INTENT(in), DIMENSION(:,:) ::   pv    ! surface current at V-point (j-component) [m/s] 
     227      ! 
     228      INTEGER  ::   ji, jj               ! dummy loop indices 
     229      REAL(wp) ::   zcoef_qsatw, zztmp   ! local variable 
    230230      !!--------------------------------------------------------------------- 
    231231 
    232       IF(wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10,11,12,13))THEN 
    233          CALL ctl_stop('blk_oce_core: requested workspace arrays unavailable.') 
    234          RETURN 
    235       END IF 
     232      IF( wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10,11,12,13) ) THEN 
     233         CALL ctl_stop('blk_oce_core: requested workspace arrays unavailable.')   ;   RETURN 
     234      ENDIF 
    236235      ! 
    237236      ! local scalars ( place there for vector optimisation purposes) 
     
    383382      ENDIF 
    384383      ! 
    385       IF(wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10,11,12,13))THEN 
    386          CALL ctl_stop('blk_oce_core: failed to release workspace arrays.') 
    387       END IF 
     384      IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10,11,12,13) )   & 
     385          CALL ctl_stop('blk_oce_core: failed to release workspace arrays') 
    388386      ! 
    389387   END SUBROUTINE blk_oce_core 
     
    407405      !! caution : the net upward water flux has with mm/day unit 
    408406      !!--------------------------------------------------------------------- 
    409       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    410       USE wrk_nemo, ONLY: z_wnds_t => wrk_2d_1                ! wind speed ( = | U10m - U_ice | ) at T-point 
    411       USE wrk_nemo, ONLY: wrk_3d_4, wrk_3d_5, wrk_3d_6, wrk_3d_7 
    412       !! 
    413       REAL(wp), DIMENSION(:,:,:)  , INTENT(in   ) ::   pst      ! ice surface temperature (>0, =rt0 over land) [Kelvin] 
    414       REAL(wp), DIMENSION(:,:)    , INTENT(in   ) ::   pui      ! ice surface velocity (i- and i- components      [m/s] 
    415       REAL(wp), DIMENSION(:,:)    , INTENT(in   ) ::   pvi      !    at I-point (B-grid) or U & V-point (C-grid) 
    416       REAL(wp), DIMENSION(:,:,:)  , INTENT(in   ) ::   palb     ! ice albedo (clear sky) (alb_ice_cs)               [%] 
    417       REAL(wp), DIMENSION(:,:)    , INTENT(  out) ::   p_taui   ! i- & j-components of surface ice stress        [N/m2] 
    418       REAL(wp), DIMENSION(:,:)    , INTENT(  out) ::   p_tauj   !   at I-point (B-grid) or U & V-point (C-grid) 
    419       REAL(wp), DIMENSION(:,:,:)  , INTENT(  out) ::   p_qns    ! non solar heat flux over ice (T-point)         [W/m2] 
    420       REAL(wp), DIMENSION(:,:,:)  , INTENT(  out) ::   p_qsr    !     solar heat flux over ice (T-point)         [W/m2] 
    421       REAL(wp), DIMENSION(:,:,:)  , INTENT(  out) ::   p_qla    ! latent    heat flux over ice (T-point)         [W/m2] 
    422       REAL(wp), DIMENSION(:,:,:)  , INTENT(  out) ::   p_dqns   ! non solar heat sensistivity  (T-point)         [W/m2] 
    423       REAL(wp), DIMENSION(:,:,:)  , INTENT(  out) ::   p_dqla   ! latent    heat sensistivity  (T-point)         [W/m2] 
    424       REAL(wp), DIMENSION(:,:)    , INTENT(  out) ::   p_tpr    ! total precipitation          (T-point)      [Kg/m2/s] 
    425       REAL(wp), DIMENSION(:,:),    INTENT(  out) ::   p_spr    ! solid precipitation          (T-point)      [Kg/m2/s] 
    426       REAL(wp), DIMENSION(:,:),    INTENT(  out) ::   p_fr1    ! 1sr fraction of qsr penetration in ice (T-point)  [%] 
    427       REAL(wp), DIMENSION(:,:),    INTENT(  out) ::   p_fr2    ! 2nd fraction of qsr penetration in ice (T-point)  [%] 
    428       CHARACTER(len=1)            , INTENT(in   ) ::   cd_grid  ! ice grid ( C or B-grid) 
    429       INTEGER                     , INTENT(in   ) ::   pdim     ! number of ice categories 
     407      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     408      USE wrk_nemo, ONLY:   z_wnds_t => wrk_2d_1                ! wind speed ( = | U10m - U_ice | ) at T-point 
     409      USE wrk_nemo, ONLY:   wrk_3d_4 , wrk_3d_5 , wrk_3d_6 , wrk_3d_7 
     410      !! 
     411      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   pst      ! ice surface temperature (>0, =rt0 over land) [Kelvin] 
     412      REAL(wp), DIMENSION(:,:)  , INTENT(in   ) ::   pui      ! ice surface velocity (i- and i- components      [m/s] 
     413      REAL(wp), DIMENSION(:,:)  , INTENT(in   ) ::   pvi      !    at I-point (B-grid) or U & V-point (C-grid) 
     414      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   palb     ! ice albedo (clear sky) (alb_ice_cs)               [%] 
     415      REAL(wp), DIMENSION(:,:)  , INTENT(  out) ::   p_taui   ! i- & j-components of surface ice stress        [N/m2] 
     416      REAL(wp), DIMENSION(:,:)  , INTENT(  out) ::   p_tauj   !   at I-point (B-grid) or U & V-point (C-grid) 
     417      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   p_qns    ! non solar heat flux over ice (T-point)         [W/m2] 
     418      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   p_qsr    !     solar heat flux over ice (T-point)         [W/m2] 
     419      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   p_qla    ! latent    heat flux over ice (T-point)         [W/m2] 
     420      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   p_dqns   ! non solar heat sensistivity  (T-point)         [W/m2] 
     421      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   p_dqla   ! latent    heat sensistivity  (T-point)         [W/m2] 
     422      REAL(wp), DIMENSION(:,:)  , INTENT(  out) ::   p_tpr    ! total precipitation          (T-point)      [Kg/m2/s] 
     423      REAL(wp), DIMENSION(:,:)  , INTENT(  out) ::   p_spr    ! solid precipitation          (T-point)      [Kg/m2/s] 
     424      REAL(wp), DIMENSION(:,:)  , INTENT(  out) ::   p_fr1    ! 1sr fraction of qsr penetration in ice (T-point)  [%] 
     425      REAL(wp), DIMENSION(:,:)  , INTENT(  out) ::   p_fr2    ! 2nd fraction of qsr penetration in ice (T-point)  [%] 
     426      CHARACTER(len=1)          , INTENT(in   ) ::   cd_grid  ! ice grid ( C or B-grid) 
     427      INTEGER                   , INTENT(in   ) ::   pdim     ! number of ice categories 
    430428      !! 
    431429      INTEGER  ::   ji, jj, jl    ! dummy loop indices 
     
    447445 
    448446      ! Set-up access to workspace arrays 
    449       IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 4,5,6,7) )THEN 
    450          CALL ctl_stop('blk_ice_core: requested workspace arrays unavailable.') 
    451          RETURN 
    452       ELSE IF(ijpl > jpk)THEN 
     447      IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 4,5,6,7) ) THEN 
     448         CALL ctl_stop('blk_ice_core: requested workspace arrays unavailable')   ;   RETURN 
     449      ELSE IF(ijpl > jpk) THEN 
    453450         CALL ctl_stop('blk_ice_core: no. of ice categories > jpk so wrk_nemo 3D workspaces cannot be used.') 
    454451         RETURN 
     
    608605      ENDIF 
    609606 
    610       IF( wrk_not_released(2, 1) .OR. wrk_not_released(3, 4,5,6,7) )THEN 
    611          CALL ctl_stop('blk_ice_core: failed to release workspace arrays.') 
    612       END IF 
    613  
     607      IF( wrk_not_released(2, 1) .OR.   & 
     608          wrk_not_released(3, 4,5,6,7) )   CALL ctl_stop('blk_ice_core: failed to release workspace arrays') 
     609      ! 
    614610   END SUBROUTINE blk_ice_core 
    615611   
    616612 
    617613   SUBROUTINE TURB_CORE_1Z(zu, sst, T_a, q_sat, q_a,   & 
    618       &                        dU, Cd, Ch, Ce   ) 
     614      &                        dU , Cd , Ch   , Ce   ) 
    619615      !!---------------------------------------------------------------------- 
    620616      !!                      ***  ROUTINE  turb_core  *** 
     
    629625      !!      are provided at the same height 'zzu'! 
    630626      !! 
    631       !! References : 
    632       !!      Large & Yeager, 2004 : ??? 
    633       !! History : 
    634       !!        !  XX-XX  (???     )  Original code 
    635       !!   9.0  !  05-08  (L. Brodeau) Rewriting and optimization 
     627      !! References :   Large & Yeager, 2004 : ??? 
    636628      !!---------------------------------------------------------------------- 
    637629      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 
     
    651643      USE wrk_nemo, ONLY: zeta => wrk_2d_27        ! stability parameter at height zu 
    652644      USE wrk_nemo, ONLY: U_n10 => wrk_2d_28       ! neutral wind velocity at 10m     [m] 
    653       USE wrk_nemo, ONLY: xlogt => wrk_2d_29,    xct => wrk_2d_30,   & 
    654                          zpsi_h => wrk_2d_31, zpsi_m => wrk_2d_32 
     645      USE wrk_nemo, ONLY: xlogt  => wrk_2d_29,    xct => wrk_2d_30,   & 
     646                          zpsi_h => wrk_2d_31, zpsi_m => wrk_2d_32 
    655647      USE wrk_nemo, ONLY: stab => iwrk_2d_1      ! 1st guess stability test integer 
    656       !! 
    657       REAL(wp), INTENT(in) :: zu                 ! altitude of wind measurement       [m] 
    658       REAL(wp), INTENT(in),  DIMENSION(:,:) ::  & 
    659          sst,       &       ! sea surface temperature         [Kelvin] 
    660          T_a,       &       ! potential air temperature       [Kelvin] 
    661          q_sat,     &       ! sea surface specific humidity   [kg/kg] 
    662          q_a,       &       ! specific air humidity           [kg/kg] 
    663          dU                 ! wind module |U(zu)-U(0)|        [m/s] 
    664       REAL(wp), intent(out), DIMENSION(:,:) :: & 
    665          Cd,    &                ! transfert coefficient for momentum       (tau) 
    666          Ch,    &                ! transfert coefficient for temperature (Q_sens) 
    667          Ce                      ! transfert coefficient for evaporation  (Q_lat) 
     648      ! 
     649      REAL(wp)                , INTENT(in   ) ::   zu      ! altitude of wind measurement       [m] 
     650      REAL(wp), DIMENSION(:,:), INTENT(in   ) ::   sst     ! sea surface temperature         [Kelvin] 
     651      REAL(wp), DIMENSION(:,:), INTENT(in   ) ::   T_a     ! potential air temperature       [Kelvin] 
     652      REAL(wp), DIMENSION(:,:), INTENT(in   ) ::   q_sat   ! sea surface specific humidity   [kg/kg] 
     653      REAL(wp), DIMENSION(:,:), INTENT(in   ) ::   q_a     ! specific air humidity           [kg/kg] 
     654      REAL(wp), DIMENSION(:,:), INTENT(in   ) ::   dU      ! wind module |U(zu)-U(0)|        [m/s] 
     655      REAL(wp), DIMENSION(:,:), INTENT(  out) ::   Cd      ! transfert coefficient for momentum       (tau) 
     656      REAL(wp), DIMENSION(:,:), INTENT(  out) ::   Ch      ! transfert coefficient for temperature (Q_sens) 
     657      REAL(wp), DIMENSION(:,:), INTENT(  out) ::   Ce      ! transfert coefficient for evaporation  (Q_lat) 
    668658      !! 
    669659      INTEGER :: j_itt 
    670       INTEGER, PARAMETER :: nb_itt = 3 
    671  
    672       REAL(wp), PARAMETER ::                        & 
    673          grav   = 9.8,          &  ! gravity                        
    674          kappa  = 0.4              ! von Karman s constant 
     660      INTEGER , PARAMETER ::   nb_itt = 3 
     661      REAL(wp), PARAMETER ::   grav   = 9.8   ! gravity                        
     662      REAL(wp), PARAMETER ::   kappa  = 0.4   ! von Karman s constant 
    675663      !!---------------------------------------------------------------------- 
    676664 
    677       IF( wrk_in_use(2, 14,15,16,17,18,         & 
    678                         19,20,21,22,23,24,      & 
    679                         25,26,27,28,29,30,      & 
    680                         31,32)             .OR. & 
    681           iwrk_in_use(2, 1) )THEN 
    682          CALL ctl_stop('TURB_CORE_1Z: requested workspace arrays unavailable.') 
    683          RETURN 
    684       END IF 
     665      IF( wrk_in_use(2,             14,15,16,17,18,19,      & 
     666                        20,21,22,23,24,25,26,27,28,29,      & 
     667                        30,31,32)                      .OR. & 
     668          iwrk_in_use(2, 1)                              ) THEN 
     669         CALL ctl_stop('TURB_CORE_1Z: requested workspace arrays unavailable')   ;   RETURN 
     670      ENDIF 
    685671 
    686672      !! * Start 
     
    743729      END DO 
    744730      !! 
    745       IF( wrk_not_released(2, 14,15,16,17,18,          & 
    746                               19,20,21,22,23,24,       & 
    747                               25,26,27,28,29,30,       & 
    748                               31,32)              .OR. & 
    749           iwrk_not_released(2, 1) )THEN 
    750          CALL ctl_stop('TURB_CORE_1Z: failed to release workspace arrays.') 
    751       END IF 
    752       !! 
     731      IF( wrk_not_released(2,             14,15,16,17,18,19,          & 
     732         &                    20,21,22,23,24,25,26,27,28,29,          & 
     733         &                    30,31,32                      )   .OR.  &       
     734         iwrk_not_released(2, 1)                                  )   & 
     735         CALL ctl_stop('TURB_CORE_1Z: failed to release workspace arrays') 
     736      ! 
    753737    END SUBROUTINE TURB_CORE_1Z 
    754738 
     
    767751      !!      whereas wind (dU) is at 10m. 
    768752      !! 
    769       !! References : 
    770       !!      Large & Yeager, 2004 : ??? 
    771       !! History : 
    772       !!   9.0  !  06-12  (L. Brodeau) Original code for 2Z 
     753      !! References :   Large & Yeager, 2004 : ??? 
    773754      !!---------------------------------------------------------------------- 
    774755      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 
     
    899880         CALL ctl_stop('TURB_CORE_2Z: requested workspace arrays unavailable.') 
    900881      END IF 
    901  
     882      ! 
    902883    END SUBROUTINE TURB_CORE_2Z 
    903884 
     
    926907           & + (1. - stabit)*(2*log((1. + X)/2) + log((1. + X2)/2) - 2*atan(X) + pi/2)  ! Unstable  
    927908 
    928       IF(wrk_not_released(2, 33,34,35))THEN 
     909      IF( wrk_not_released(2, 33,34,35) ) THEN 
    929910         CALL ctl_stop('psi_m: failed to release workspace arrays.') 
    930911         RETURN 
     
    946927      !------------------------------------------------------------------------------- 
    947928 
    948       IF(wrk_in_use(2, 33,34,35))THEN 
    949          CALL ctl_stop('psi_h: requested workspace arrays unavailable.') 
    950          RETURN 
    951       END IF 
     929      IF( wrk_in_use(2, 33,34,35) ) THEN 
     930         CALL ctl_stop('psi_h: requested workspace arrays unavailable')   ;   RETURN 
     931      ENDIF 
    952932 
    953933      X2 = sqrt(abs(1. - 16.*zta))  ;  X2 = max(X2 , 1.) ;  X  = sqrt(X2) 
     
    956936           & + (1. - stabit)*(2.*log( (1. + X2)/2. ))                 ! Unstable 
    957937 
    958       IF(wrk_not_released(2, 33,34,35))THEN 
    959          CALL ctl_stop('psi_h: failed to release workspace arrays.') 
    960          RETURN 
    961       END IF 
    962  
     938      IF( wrk_not_released(2, 33,34,35) )   CALL ctl_stop('psi_h: failed to release workspace arrays.') 
     939      ! 
    963940    END FUNCTION psi_h 
    964941   
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r2633 r2636  
    223223      !!--------------------------------------------------------------------- 
    224224 
    225       IF(wrk_in_use(2,1,2) ) THEN 
    226          CALL ctl_stop('sbc_cpl_init: requested workspace arrays unavailable.')   ;   RETURN 
    227       END IF 
     225      IF(wrk_in_use(2, 1,2) ) THEN 
     226         CALL ctl_stop('sbc_cpl_init: requested workspace arrays unavailable')   ;   RETURN 
     227      ENDIF 
    228228 
    229229      ! ================================ ! 
     
    563563         &   CALL ctl_stop( 'sbc_cpl_init: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' ) 
    564564 
    565       IF(wrk_not_released(2,1,2))THEN 
    566          CALL ctl_stop('sbc_cpl_init: failed to release workspace arrays.') 
    567       END IF 
    568  
     565      IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('sbc_cpl_init: failed to release workspace arrays.') 
     566      ! 
    569567   END SUBROUTINE sbc_cpl_init 
    570568 
     
    629627      !!---------------------------------------------------------------------- 
    630628 
    631       IF(wrk_in_use(2, 1,2))THEN 
    632          CALL ctl_stop('sbc_cpl_rcv: requested workspace arrays unavailable.') 
    633          RETURN 
    634       END IF 
     629      IF( wrk_in_use(2, 1,2) ) THEN 
     630         CALL ctl_stop('sbc_cpl_rcv: requested workspace arrays unavailable')   ;   RETURN 
     631      ENDIF 
    635632 
    636633      IF( kt == nit000 )   CALL sbc_cpl_init( k_ice )          ! initialisation 
     
    820817      ENDIF 
    821818      ! 
    822       IF(wrk_not_released(2, 1,2))THEN 
    823          CALL ctl_stop('sbc_cpl_rcv: failed to release workspace arrays.') 
    824       END IF 
     819      IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('sbc_cpl_rcv: failed to release workspace arrays') 
    825820      ! 
    826821   END SUBROUTINE sbc_cpl_rcv 
     
    870865      !!---------------------------------------------------------------------- 
    871866 
    872       IF(wrk_in_use(2,1,2))THEN 
    873          CALL ctl_stop('sbc_cpl_ice_tau: requested workspace arrays unavailable.') 
    874          RETURN 
    875       END IF 
     867      IF( wrk_in_use(2, 1,2) ) THEN 
     868         CALL ctl_stop('sbc_cpl_ice_tau: requested workspace arrays unavailable')   ;   RETURN 
     869      ENDIF 
    876870 
    877871      IF( srcv(jpr_itx1)%laction ) THEN   ;   itx =  jpr_itx1    
     
    10411035      ENDIF 
    10421036      !    
    1043       IF(wrk_not_released(2,1,2))THEN 
    1044          CALL ctl_stop('sbc_cpl_ice_tau: failed to release workspace arrays.') 
    1045       END IF 
     1037      IF( wrk_not_released(2, 1,2) )   CALL ctl_stop('sbc_cpl_ice_tau: failed to release workspace arrays') 
    10461038      ! 
    10471039   END SUBROUTINE sbc_cpl_ice_tau 
     
    11181110      !!---------------------------------------------------------------------- 
    11191111 
    1120       IF( wrk_in_use(2,1,2,3) .OR. wrk_in_use(3,1) )THEN 
    1121          CALL ctl_stop('sbc_cpl_ice_flx: requested workspace arrays unavailable.') 
    1122          RETURN 
    1123       END IF 
     1112      IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use(3, 1) ) THEN 
     1113         CALL ctl_stop('sbc_cpl_ice_flx: requested workspace arrays unavailable')   ;   RETURN 
     1114      ENDIF 
    11241115 
    11251116      zicefr(:,:,1) = 1.- p_frld(:,:,1) 
     
    12401231      END SELECT 
    12411232 
    1242       IF( wrk_not_released(2,1,2,3) .OR. wrk_not_released(3,1) )THEN 
    1243          CALL ctl_stop('sbc_cpl_ice_flx: failed to release workspace arrays.') 
    1244       END IF 
    1245  
     1233      IF( wrk_not_released(2, 1,2,3) .OR.   & 
     1234          wrk_not_released(3, 1)      )   CALL ctl_stop('sbc_cpl_ice_flx: failed to release workspace arrays') 
     1235      ! 
    12461236   END SUBROUTINE sbc_cpl_ice_flx 
    12471237    
     
    12681258      !!---------------------------------------------------------------------- 
    12691259 
    1270       IF(wrk_in_use(2, 1,2,3,4,5,6,7,8,9))THEN 
    1271          CALL ctl_stop('sbc_cpl_snd: requested workspace arrays are unavailable.'); 
    1272          RETURN 
    1273       END IF 
     1260      IF( wrk_in_use(2, 1,2,3,4,5,6,7,8,9) ) THEN 
     1261         CALL ctl_stop('sbc_cpl_snd: requested workspace arrays are unavailable')   ;   RETURN 
     1262      ENDIF 
    12741263 
    12751264      isec = ( kt - nit000 ) * NINT(rdttra(1))        ! date of exchanges 
     
    14441433         !  
    14451434      ENDIF 
    1446    ! 
    1447       IF(wrk_not_released(2, 1,2,3,4,5,6,7,8,9))THEN 
    1448          CALL ctl_stop('sbc_cpl_snd: failed to release workspace arrays.'); 
    1449          RETURN 
    1450       END IF 
    1451    ! 
     1435      ! 
     1436      IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9) )   CALL ctl_stop('sbc_cpl_snd: failed to release workspace arrays') 
     1437      ! 
    14521438   END SUBROUTINE sbc_cpl_snd 
    14531439    
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcdcy.F90

    r2625 r2636  
    1010 
    1111   !!---------------------------------------------------------------------- 
    12    !!  sbc_dcy : compute solar flux at kt from daily mean, taking  
    13    !!            diurnal cycle into account 
     12   !!  sbc_dcy : solar flux at kt from daily mean, taking diurnal cycle into account 
    1413   !!---------------------------------------------------------------------- 
    1514   USE oce              ! ocean dynamics and tracers 
     
    3332   !! NEMO/OPA 3.3 , NEMO-consortium (2010)  
    3433   !! $Id$  
    35    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     34   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3635   !!---------------------------------------------------------------------- 
    3736CONTAINS 
     
    4140         !!                ***  FUNCTION sbc_dcy_alloc  *** 
    4241         !!---------------------------------------------------------------------- 
    43          ! 
    4442         ALLOCATE( raa (jpi,jpj) , rbb  (jpi,jpj) , rcc  (jpi,jpj) , rab  (jpi,jpj) ,     & 
    4543            &      rtmd(jpi,jpj) , rdawn(jpi,jpj) , rdusk(jpi,jpj) , rscal(jpi,jpj) , STAT=sbc_dcy_alloc ) 
     
    4745         IF( lk_mpp             )   CALL mpp_sum ( sbc_dcy_alloc ) 
    4846         IF( sbc_dcy_alloc /= 0 )   CALL ctl_warn('sbc_dcy_alloc: failed to allocate arrays') 
    49          ! 
    5047      END FUNCTION sbc_dcy_alloc 
    5148 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90

    r2620 r2636  
    1919   USE iom             ! I/O manager library 
    2020   USE in_out_manager  ! I/O manager 
     21   USE lib_mpp         ! MPP library 
    2122 
    2223   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r2633 r2636  
    2222   USE oce             ! ocean dynamics and tracers 
    2323   USE dom_oce         ! ocean space and time domain 
    24    USE lib_mpp         ! MPP library 
    2524   USE par_ice         ! sea-ice parameters 
    2625   USE ice             ! LIM-3: ice variables 
     
    5049   USE c1d             ! 1D vertical configuration 
    5150   USE lbclnk          ! lateral boundary condition - MPP link 
     51   USE lib_mpp         ! MPP library 
    5252   USE iom             ! I/O manager library 
    5353   USE in_out_manager  ! I/O manager 
     
    101101 
    102102      IF( wrk_in_use(3, 1,2) ) THEN 
    103          CALL ctl_stop( 'sbc_ice_lim: requested workspace arrays are unavailable.' )   ;   RETURN 
     103         CALL ctl_stop( 'sbc_ice_lim: requested workspace arrays are unavailable' )   ;   RETURN 
    104104      ENDIF 
    105105 
     
    252252!!gm   remark, the ocean-ice stress is not saved in ice diag call above .....  find a solution!!! 
    253253      ! 
    254       IF( wrk_not_released(3, 1,2) )   CALL ctl_stop( 'sbc_ice_lim: failed to release workspace arrays.' ) 
     254      IF( wrk_not_released(3, 1,2) )   CALL ctl_stop( 'sbc_ice_lim: failed to release workspace arrays' ) 
    255255      ! 
    256256   END SUBROUTINE sbc_ice_lim 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r2633 r2636  
    9696      !!---------------------------------------------------------------------- 
    9797 
    98       IF(wrk_in_use(3, 1,2,3) ) THEN 
     98      IF( wrk_in_use(3, 1,2,3) ) THEN 
    9999         CALL ctl_stop('sbc_ice_lim_2: requested workspace arrays are unavailable.')   ;   RETURN 
    100       END IF 
     100      ENDIF 
    101101      ! Use pointers to access only sub-arrays of workspaces 
    102102      zalb_ice_os => wrk_3d_1(:,:,1:1) 
     
    228228      IF( ln_limdyn    )   CALL lim_sbc_tau_2( kt, ub(:,:,1), vb(:,:,1) )  ! using before instantaneous surf. currents 
    229229      ! 
    230       IF(wrk_not_released(3, 1,2,3) )   CALL ctl_stop('sbc_ice_lim_2: failed to release workspace arrays') 
     230      IF( wrk_not_released(3, 1,2,3) )   CALL ctl_stop('sbc_ice_lim_2: failed to release workspace arrays') 
    231231      ! 
    232232   END SUBROUTINE sbc_ice_lim_2 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r2620 r2636  
    3838   USE sbcfwb           ! surface boundary condition: freshwater budget 
    3939   USE closea           ! closed sea 
    40    USE bdy_par         ! unstructured open boundary data variables 
    41    USE bdyice          ! unstructured open boundary data  (bdy_ice_frs routine) 
     40   USE bdy_par          ! unstructured open boundary data variables 
     41   USE bdyice           ! unstructured open boundary data  (bdy_ice_frs routine) 
    4242 
    4343   USE prtctl           ! Print control                    (prt_ctl routine) 
     
    4545   USE iom              ! IOM library 
    4646   USE in_out_manager   ! I/O manager 
     47   USE lib_mpp          ! MPP library 
    4748 
    4849   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90

    r2620 r2636  
    1919   USE phycst          ! physical constants 
    2020   USE sbc_oce         ! surface boundary condition variables 
     21   USE closea          ! closed seas 
    2122   USE fldread         ! read input field at current time step 
     23   USE restart         ! restart 
    2224   USE in_out_manager  ! I/O manager 
    2325   USE iom             ! I/O module 
    24    USE restart         ! restart 
    25    USE closea          ! closed seas 
     26   USE lib_mpp         ! MPP library 
    2627 
    2728   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SOL/solpcg.F90

    r2633 r2636  
    2626   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    2727   !! $Id$  
    28    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     28   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    2929   !!---------------------------------------------------------------------- 
    3030CONTAINS 
     
    8383      !!        !  08-01  (R. Benshila) mpp optimization 
    8484      !!---------------------------------------------------------------------- 
    85       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    86       USE wrk_nemo, ONLY: zgcr => wrk_2d_1 
    87       !! 
    88       INTEGER, INTENT( inout ) ::   kindic   ! solver indicator, < 0 if the conver- 
    89       !                                      ! gence is not reached: the model is 
    90       !                                      ! stopped in step 
    91       !                                      ! set to zero before the call of solpcg 
    92       !! 
    93       INTEGER ::   ji, jj, jn                ! dummy loop indices 
    94       REAL(wp) ::  zgcad                     ! temporary scalars 
    95       REAL(wp), DIMENSION(2) :: zsum 
     85      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     86      USE wrk_nemo, ONLY:   zgcr => wrk_2d_1 
     87      !! 
     88      INTEGER, INTENT(inout) ::   kindic   ! solver indicator, < 0 if the conver- 
     89      !                                    ! gence is not reached: the model is stopped in step 
     90      !                                    ! set to zero before the call of solpcg 
     91      !! 
     92      INTEGER  ::   ji, jj, jn   ! dummy loop indices 
     93      REAL(wp) ::   zgcad        ! temporary scalars 
     94      REAL(wp), DIMENSION(2) ::   zsum 
    9695      !!---------------------------------------------------------------------- 
    9796       
    9897      IF( wrk_in_use(2, 1) )THEN 
    99          CALL ctl_stop('sol_pcg: requested workspace array is unavailable') 
    100          RETURN 
    101       END IF 
     98         CALL ctl_stop('sol_pcg: requested workspace array is unavailable')   ;   RETURN 
     99      ENDIF 
    102100 
    103101      ! Initialization of the algorithm with standard PCG 
    104102      ! ------------------------------------------------- 
    105       zgcr = 0.e0  
    106       gcr  = 0.e0  
     103      zgcr = 0._wp 
     104      gcr  = 0._wp 
    107105 
    108106      CALL lbc_lnk( gcx, c_solver_pt, 1. )   ! lateral boundary condition 
     
    207205      END DO                                           !    End Loop 
    208206      !                                                !================ 
    209       
    210207999   CONTINUE 
    211       
    212       
    213       ! Output in gcx with lateral b.c. applied 
    214       ! --------------------------------------- 
    215       
    216       CALL lbc_lnk( gcx, c_solver_pt, 1. ) 
    217       
     208           
     209      CALL lbc_lnk( gcx, c_solver_pt, 1. )      ! Output in gcx with lateral b.c. applied 
    218210      !  
    219       IF( wrk_not_released(2, 1) )THEN 
    220          CALL ctl_stop('sol_pcg: failed to release workspace array') 
    221       END IF 
     211      IF( wrk_not_released(2, 1) )   CALL ctl_stop('sol_pcg: failed to release workspace array') 
    222212      ! 
    223213   END SUBROUTINE sol_pcg 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SOL/solsor.F90

    r2633 r2636  
    3232   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    3333   !! $Id$  
    34    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     34   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3535   !!---------------------------------------------------------------------- 
    36  
    3736CONTAINS 
    3837       
     
    5857      !!                Beare and Stevens 1997 Ann. Geophysicae 15, 1369-1377 
    5958      !!---------------------------------------------------------------------- 
    60       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    61       USE wrk_nemo, ONLY: ztab => wrk_2d_1 
     59      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     60      USE wrk_nemo, ONLY:   ztab => wrk_2d_1    ! 2D workspace 
    6261      !! 
    6362      INTEGER, INTENT(inout) ::   kindic   ! solver indicator, < 0 if the convergence is not reached: 
    6463      !                                    ! the model is stopped in step (set to zero before the call of solsor) 
    6564      !! 
    66       INTEGER  ::   ji, jj, jn               ! dummy loop indices 
    67       INTEGER  ::   ishift, icount 
    68       INTEGER  ::   ijmppodd, ijmppeven, ijpr2d 
    69       REAL(wp) ::   ztmp, zres, zres2 
     65      INTEGER  ::   ji, jj, jn       ! dummy loop indices 
     66      INTEGER  ::   ishift, icount, ijmppodd, ijmppeven, ijpr2d   ! local integers 
     67      REAL(wp) ::   ztmp, zres, zres2                             ! local scalars 
    7068      !!---------------------------------------------------------------------- 
    7169       
    7270      IF( wrk_in_use(2, 1) )THEN 
    73          CALL ctl_stop('sol_sor: requested workspace array is unavailable') 
    74          RETURN 
    75       END IF 
     71         CALL ctl_stop('sol_sor: requested workspace array is unavailable')   ;   RETURN 
     72      ENDIF 
    7673 
    7774      ijmppeven = MOD( nimpp+njmpp+jpr2di+jpr2dj   , 2 ) 
     
    171168      CALL lbc_lnk_e( gcx, c_solver_pt, 1. )    ! boundary conditions 
    172169      !  
    173       IF( wrk_not_released(2, 1) )THEN 
    174          CALL ctl_stop('sol_sor: failed to release workspace array') 
    175       END IF 
     170      IF( wrk_not_released(2, 1) )   CALL ctl_stop('sol_sor: failed to release workspace array') 
    176171      ! 
    177172   END SUBROUTINE sol_sor 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SOL/solver.F90

    r2622 r2636  
    2626   USE in_out_manager  ! I/O manager 
    2727   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    28    USE lib_mpp 
     28   USE lib_mpp         ! MPP library 
    2929 
    3030   IMPLICIT NONE 
     
    3535   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3636   !!---------------------------------------------------------------------- 
    37  
    3837CONTAINS 
    3938 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90

    r2633 r2636  
    3333   USE dom_oce         ! ocean space and time domain 
    3434   USE phycst          ! physical constants 
     35   USE zdfddm          ! vertical physics: double diffusion 
    3536   USE in_out_manager  ! I/O manager 
    36    USE zdfddm          ! vertical physics: double diffusion 
     37   USE lib_mpp         ! MPP library 
    3738   USE prtctl          ! Print control 
    3839 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90

    r2633 r2636  
    2424   USE ldftra_oce      ! lateral diffusion coefficient on tracers 
    2525   USE in_out_manager  ! I/O manager 
     26   USE iom             ! I/O module 
    2627   USE prtctl          ! Print control 
    27    USE iom 
     28   USE lib_mpp         ! MPP library 
    2829 
    2930   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90

    r2633 r2636  
    3131   USE restart         ! ocean restart 
    3232   USE trc_oce         ! share passive tracers/Ocean variables 
     33   USE lib_mpp           ! MPP library 
    3334 
    3435   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90

    r2633 r2636  
    2828   USE diaptr          ! poleward transport diagnostics 
    2929   USE trc_oce         ! share passive tracers/Ocean variables 
     30   USE lib_mpp         ! MPP library 
    3031 
    3132   IMPLICIT NONE 
     
    166167      END DO                                              ! tracer loop 
    167168      !                                                   ! =========== 
    168       IF(wrk_not_released(2, 1,2,3))THEN 
    169          CALL ctl_stop('tra_ldf_bilap: failed to release workspace arrays.') 
    170       END IF 
     169      IF( wrk_not_released(2, 1,2,3) )   CALL ctl_stop('tra_ldf_bilap: failed to release workspace arrays') 
    171170      ! 
    172171   END SUBROUTINE tra_ldf_bilap 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90

    r2633 r2636  
    2424   USE diaptr          ! poleward transport diagnostics  
    2525   USE trc_oce         ! share passive tracers/Ocean variables 
     26   USE lib_mpp         ! MPP library 
    2627 
    2728   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90

    r2633 r2636  
    2525   USE iom             ! I/O library 
    2626   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     27   USE lib_mpp         ! MPP library 
    2728 
    2829   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90

    r2633 r2636  
    1818   USE zdf_oce         ! ocean vertical physics 
    1919   USE trdmod_oce      ! ocean active tracer trends 
    20    USE trdtra      ! ocean active tracer trends 
     20   USE trdtra          ! ocean active tracer trends 
    2121   USE eosbn2          ! equation of state (eos routine)  
    2222   USE lbclnk          ! lateral boundary conditions (or mpp link) 
    2323   USE in_out_manager  ! I/O manager 
     24   USE lib_mpp         ! MPP library 
    2425 
    2526   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r2633 r2636  
    2828   USE fldread         ! read input fields 
    2929   USE restart         ! ocean restart 
     30   USE lib_mpp         ! MPP library 
    3031 
    3132   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90

    r2623 r2636  
    1414   USE oce             ! ocean dynamics and tracers variables 
    1515   USE dom_oce         ! ocean space and time domain variables  
     16   USE domvvl          ! variable volume 
     17   USE phycst          ! physical constant 
    1618   USE zdf_oce         ! ocean vertical physics variables 
    1719   USE sbc_oce         ! surface boundary condition: ocean 
     
    2628   USE in_out_manager  ! I/O manager 
    2729   USE prtctl          ! Print control 
     30   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     31   USE lib_mpp         ! MPP library 
    2832 
    29    USE phycst 
    30    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    31    USE domvvl          ! variable volume 
    3233 
    3334   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90

    r2633 r2636  
    2828   USE zdf_oce         ! ocean vertical physics 
    2929   USE zdfddm          ! ocean vertical physics: double diffusion 
     30   USE trc_oce         ! share passive tracers/Ocean variables 
    3031   USE in_out_manager  ! I/O manager 
    31    USE trc_oce         ! share passive tracers/Ocean variables 
     32   USE lib_mpp         ! MPP library 
    3233 
    3334   IMPLICIT NONE 
     
    4344   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    4445   !! $Id$ 
    45    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     46   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    4647   !!---------------------------------------------------------------------- 
    47  
    4848CONTAINS 
    4949 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r2633 r2636  
    3333   USE in_out_manager  ! I/O manager 
    3434   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
     35   USE lib_mpp         ! MPP library 
    3536 
    3637   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90

    r2633 r2636  
    2020   USE in_out_manager  ! I/O manager 
    2121   USE lbclnk          ! lateral boundary conditions (or mpp link) 
     22   USE lib_mpp         ! MPP library 
    2223 
    2324   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdmld_oce.F90

    r2629 r2636  
    9191     !!                 ***  FUNCTION trdmld_oce_alloc   *** 
    9292     !!---------------------------------------------------------------------- 
    93      USE in_out_manager, ONLY: ctl_warn 
    9493     USE lib_mpp 
    9594     INTEGER :: ierr(5) 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdmod.F90

    r2633 r2636  
    2424   USE trdmld                  ! ocean active mixed layer tracers trends  
    2525   USE in_out_manager          ! I/O manager 
     26   USE lib_mpp         ! MPP library 
    2627 
    2728   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdmod_trc.F90

    r2528 r2636  
    44   !!  Dummy module 
    55   !!====================================================================== 
    6    !!---------------------------------------------------------------------- 
    7    !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    8    !! $Id$ 
    9    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    10    !!---------------------------------------------------------------------- 
    116   !!---------------------------------------------------------------------- 
    127   !!   Dummy module                                             NO TOP use 
     
    2116   END SUBROUTINE trd_mod_trc 
    2217 
     18   !!---------------------------------------------------------------------- 
     19   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     20   !! $Id$ 
     21   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    2322   !!====================================================================== 
    2423END MODULE trdmod_trc 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90

    r2633 r2636  
    1717   USE trdmod_trc       ! ocean passive mixed layer tracers trends  
    1818   USE in_out_manager   ! I/O manager 
     19   USE lib_mpp          ! MPP library 
    1920 
    2021   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90

    r2616 r2636  
    99   USE par_oce        ! ocean parameters 
    1010   USE in_out_manager ! I/O manager 
     11   USE lib_mpp        ! MPP library 
    1112 
    1213   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90

    r2633 r2636  
    2121   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2222   USE prtctl          ! Print control 
     23   USE lib_mpp            ! MPP library 
    2324 
    2425   IMPLICIT NONE 
     
    5657      IF( zdf_ddm_alloc /= 0 )   CALL ctl_warn('zdf_ddm_alloc: failed to allocate arrays') 
    5758   END FUNCTION zdf_ddm_alloc 
     59 
    5860 
    5961   SUBROUTINE zdf_ddm( kt ) 
     
    8991      !! References :   Merryfield et al., JPO, 29, 1124-1142, 1999. 
    9092      !!---------------------------------------------------------------------- 
    91       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    92       USE wrk_nemo, ONLY: zmsks  => wrk_2d_1,  & 
    93                           zmskf  => wrk_2d_2,  & 
    94                           zmskd1 => wrk_2d_3,  & 
    95                           zmskd2 => wrk_2d_4,  & 
    96                           zmskd3 => wrk_2d_5 
    97       IMPLICIT none 
     93      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     94      USE wrk_nemo, ONLY:   zmsks  => wrk_2d_1 , zmskf  => wrk_2d_2 , zmskd1 => wrk_2d_3   ! 2D workspace 
     95      USE wrk_nemo, ONLY:   zmskd2 => wrk_2d_4 , zmskd3 => wrk_2d_5                        !  -      - 
     96      ! 
    9897      INTEGER, INTENT(in) ::   kt   ! ocean time-step indexocean time step 
    99       !! 
     98      ! 
    10099      INTEGER  ::   ji, jj , jk     ! dummy loop indices 
    101100      REAL(wp) ::   zinr, zrr       ! temporary scalars 
     
    105104 
    106105      IF( wrk_in_use(2, 1,2,3,4,5) ) THEN 
    107          CALL ctl_stop('zdf_ddm: Requested workspace arrays already in use.')   ;   RETURN 
     106         CALL ctl_stop('zdf_ddm: Requested workspace arrays already in use')   ;   RETURN 
    108107      END IF 
    109108 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r2633 r2636  
    2525   USE restart        ! only for lrst_oce 
    2626   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
     27   USE lib_mpp        ! MPP manager 
    2728   USE prtctl         ! Print control 
    2829   USE in_out_manager ! I/O manager 
     
    106107   !!---------------------------------------------------------------------- 
    107108   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
    108    !! $Id $ 
     109   !! $Id$ 
    109110   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    110111   !!---------------------------------------------------------------------- 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90

    r2633 r2636  
    2828   USE zdfddm          ! double diffusion mixing 
    2929   USE in_out_manager  ! I/O manager 
     30   USE lib_mpp         ! MPP library 
    3031   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3132   USE prtctl          ! Print control 
     
    167168         ! 
    168169      IF( lk_mpp             )   CALL mpp_sum ( zdf_kpp_alloc ) 
    169       IF( zdf_kpp_alloc /= 0 )   CALL ctl_warn('zdf_kpp_alloc: failed to allocate arrays.') 
     170      IF( zdf_kpp_alloc /= 0 )   CALL ctl_warn('zdf_kpp_alloc: failed to allocate arrays') 
    170171   END FUNCTION zdf_kpp_alloc 
    171172 
     
    12361237      IF( wrk_not_released(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR. & 
    12371238          wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10,11)          .OR. & 
    1238           wrk_not_released_xz(1,2,3)  )   CALL ctl_stop('zdf_kpp : failed to release workspace arrays.') 
     1239          wrk_not_released_xz(1,2,3)  )   CALL ctl_stop('zdf_kpp : failed to release workspace arrays') 
    12391240      ! 
    12401241   END SUBROUTINE zdf_kpp 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90

    r2633 r2636  
    1414   USE in_out_manager  ! I/O manager 
    1515   USE prtctl          ! Print control 
    16    USE iom 
     16   USE iom             ! I/O library 
     17   USE lib_mpp         ! MPP library 
    1718 
    1819   IMPLICIT NONE 
     
    6465      !!---------------------------------------------------------------------- 
    6566      USE wrk_nemo, ONLY: iwrk_in_use, iwrk_not_released 
    66       USE wrk_nemo, ONLY: imld => iwrk_2d_1    ! 2D workspace 
     67      USE wrk_nemo, ONLY: imld => iwrk_2d_1    ! 2D integer workspace 
    6768      !! 
    6869      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
     
    7475      !!---------------------------------------------------------------------- 
    7576 
    76       IF( iwrk_in_use(2,1) )THEN 
    77          CALL ctl_stop('zdf_mxl : requested workspace array unavailable.')   ;   RETURN 
     77      IF( iwrk_in_use(2, 1) )THEN 
     78         CALL ctl_stop('zdf_mxl : requested workspace array unavailable')   ;   RETURN 
    7879      END IF 
    7980 
     
    112113      IF(ln_ctl)   CALL prt_ctl( tab2d_1=REAL(nmln,wp), clinfo1=' nmln : ', tab2d_2=hmlp, clinfo2=' hmlp : ', ovlap=1 ) 
    113114      ! 
    114       IF( iwrk_not_released(2,1) )   CALL ctl_stop('zdf_mxl : failed to release workspace array') 
     115      IF( iwrk_not_released(2, 1) )   CALL ctl_stop('zdf_mxl : failed to release workspace array') 
    115116      ! 
    116117   END SUBROUTINE zdf_mxl 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90

    r2633 r2636  
    2525   USE in_out_manager  ! I/O manager 
    2626   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
     27   USE lib_mpp         ! MPP library 
    2728 
    2829   IMPLICIT NONE 
     
    5758      ! 
    5859      IF( lk_mpp             )   CALL mpp_sum ( zdf_ric_alloc ) 
    59       IF( zdf_ric_alloc /= 0 )   CALL ctl_warn('zdf_ric_alloc: failed to allocate arrays.') 
     60      IF( zdf_ric_alloc /= 0 )   CALL ctl_warn('zdf_ric_alloc: failed to allocate arrays') 
    6061   END FUNCTION zdf_ric_alloc 
    6162 
     
    9798      !!---------------------------------------------------------------------- 
    9899 
    99       IF(wrk_in_use(2, 1) ) THEN 
     100      IF( wrk_in_use(2, 1) ) THEN 
    100101         CALL ctl_stop('zdf_ric : requested workspace array unavailable')   ;   RETURN 
    101102      END IF 
     
    150151      CALL lbc_lnk( avmu, 'U', 1. )   ;   CALL lbc_lnk( avmv, 'V', 1. ) 
    151152      ! 
    152       IF(wrk_not_released(2, 1) )   CALL ctl_stop('zdf_ric : failed to release workspace array') 
     153      IF( wrk_not_released(2, 1) )   CALL ctl_stop('zdf_ric : failed to release workspace array') 
    153154      ! 
    154155   END SUBROUTINE zdf_ric 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90

    r2633 r2636  
    4949   USE in_out_manager ! I/O manager 
    5050   USE iom            ! I/O manager library 
     51   USE lib_mpp        ! MPP library 
    5152 
    5253   IMPLICIT NONE 
     
    189190      !!                (= Kz dz[Ub] * dz[Un] ) 
    190191      !! --------------------------------------------------------------------- 
    191       USE oce,   zdiag  =>   ua   ! use ua as workspace 
    192       USE oce,   zd_up  =>   va   ! use va as workspace 
    193       USE oce,   zd_lw  =>   ta   ! use ta as workspace 
    194       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 
    195       USE wrk_nemo, ONLY: imlc => iwrk_2d_1 ! 2D INTEGER workspace 
    196       USE wrk_nemo, ONLY: zhlc => wrk_2d_1  ! 2D REAL workspace 
    197       USE wrk_nemo, ONLY: zpelc => wrk_3d_1 ! 3D REAL workspace 
     192      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 
     193      USE oce     , ONLY:   zdiag => ua , zd_up => va , zd_lw => ta   ! (ua,va,ta) used  as workspace 
     194      USE wrk_nemo, ONLY:   imlc  => iwrk_2d_1   ! 2D INTEGER workspace 
     195      USE wrk_nemo, ONLY:   zhlc  =>  wrk_2d_1   ! 2D REAL workspace 
     196      USE wrk_nemo, ONLY:   zpelc =>  wrk_3d_1   ! 3D REAL workspace 
    198197      !! 
    199198      INTEGER  ::   ji, jj, jk                      ! dummy loop arguments 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90

    r2633 r2636  
    2424   USE in_out_manager  ! I/O manager 
    2525   USE iom             ! I/O Manager 
     26   USE lib_mpp         ! MPP library 
    2627   USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    2728 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/lib_print.f90

    r2528 r2636  
    1010   !!   prizre       : print an real 2D vertical field 
    1111   !!---------------------------------------------------------------------- 
    12    !! * Mules used 
    1312   USE par_kind      ! kind parameters 
    1413 
     
    1615   PRIVATE 
    1716 
    18    !! * Routine accessibility 
    19    PUBLIC prihin, prihre, prizre 
    20    !!---------------------------------------------------------------------- 
     17   PUBLIC   prihin, prihre, prizre 
     18 
    2119   !!---------------------------------------------------------------------- 
    2220   !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     
    4038      !!        !  03-07 (G. Madec)  F90, free form 
    4139      !!---------------------------------------------------------------------- 
    42       !! * Arguments 
    4340      INTEGER, INTENT( in ) ::   & 
    4441         ki, kj,                 &  ! array dimensions 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/oce.F90

    r2625 r2636  
    99   !!---------------------------------------------------------------------- 
    1010   USE par_oce        ! ocean parameters 
    11    USE in_out_manager ! I/O manager 
     11   USE lib_mpp        ! MPP library 
    1212 
    1313   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90

    r2625 r2636  
    1313   USE in_out_manager  ! I/O manager 
    1414   USE dom_oce         ! ocean space and time domain 
     15   USE lib_mpp         ! MPP library 
    1516 
    1617   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/LOBSTER/sms_lobster.F90

    r2607 r2636  
    1111   !!             2.0  !  2007-04  (C. Deltel, G. Madec) Free form and modules 
    1212   !!---------------------------------------------------------------------- 
    13  
    1413#if defined key_lobster 
    1514   !!---------------------------------------------------------------------- 
     
    2120   IMPLICIT NONE 
    2221   PUBLIC 
    23  
    24    !!---------------------------------------------------------------------- 
    25    !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    26    !! $Id$  
    27    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    28    !!---------------------------------------------------------------------- 
    2922 
    3023   !!  biological parameters 
     
    108101   REAL(wp), ALLOCATABLE, SAVE,  DIMENSION(:,:) ::   cmask       !: ??? 
    109102 
    110    !!====================================================================== 
    111  
     103   !!---------------------------------------------------------------------- 
     104   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     105   !! $Id$  
     106   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     107   !!---------------------------------------------------------------------- 
    112108CONTAINS 
    113109 
    114    FUNCTION sms_lobster_alloc() 
     110   INTEGER FUNCTION sms_lobster_alloc() 
    115111      !!---------------------------------------------------------------------- 
    116112      !!        *** ROUTINE sms_lobster_alloc *** 
    117113      !!---------------------------------------------------------------------- 
    118       USE in_out_manager, ONLY: ctl_warn 
    119       INTEGER :: sms_lobster_alloc 
     114      USE lib_mpp, ONLY: ctl_warn 
    120115      !!---------------------------------------------------------------------- 
    121  
    122       ALLOCATE(remdmp(jpk,jp_lobster),                                & 
    123                neln(jpi,jpj),    xze(jpi,jpj),     xpar(jpi,jpj,jpk), & 
    124                dminl(jpi,jpj),   dmin3(jpi,jpj,jpk),                  & 
    125                sedpocb(jpi,jpj), sedpocn(jpi,jpj), sedpoca(jpi,jpj),  & 
    126                fbod(jpi,jpj),    cmask(jpi,jpj)  ,                    & 
    127                Stat=sms_lobster_alloc) 
    128  
    129       IF(sms_lobster_alloc /= 0)THEN 
    130          CALL ctl_warn('sms_lobster_alloc : failed to allocate arrays.') 
    131       END IF 
    132  
     116      ! 
     117      ALLOCATE( remdmp(jpk,jp_lobster),                                   & 
     118         &      neln(jpi,jpj),    xze(jpi,jpj),     xpar(jpi,jpj,jpk),    & 
     119         &      dminl(jpi,jpj),   dmin3(jpi,jpj,jpk),                     & 
     120         &      sedpocb(jpi,jpj), sedpocn(jpi,jpj), sedpoca(jpi,jpj),     & 
     121         &      fbod(jpi,jpj),    cmask(jpi,jpj)                    , STAT=sms_lobster_alloc ) 
     122         ! 
     123      IF( sms_lobster_alloc /= 0 )   CALL ctl_warn('sms_lobster_alloc : failed to allocate arrays') 
     124      ! 
    133125   END FUNCTION sms_lobster_alloc 
    134126 
     
    140132 
    141133   !!====================================================================== 
    142  
    143134END MODULE sms_lobster 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcnam_lobster.F90

    r2567 r2636  
    1010   !!   'key_lobster'   :                                 LOBSTER bio-model 
    1111   !!---------------------------------------------------------------------- 
    12    !! trc_nam_lobster      : LOBSTER model namelist read 
    13    !!---------------------------------------------------------------------- 
    14    USE oce_trc         ! Ocean variables 
    15    USE par_trc         ! TOP parameters 
    16    USE trc             ! TOP variables 
    17    USE sms_lobster     ! sms trends 
    18    USE in_out_manager  ! I/O manager 
     12   !! trc_nam_lobster   : LOBSTER model namelist read 
     13   !!---------------------------------------------------------------------- 
     14   USE oce_trc          ! Ocean variables 
     15   USE par_trc          ! TOP parameters 
     16   USE trc              ! TOP variables 
     17   USE sms_lobster      ! sms trends 
     18   USE in_out_manager   ! I/O manager 
     19   USE lib_mpp          ! MPP library 
    1920 
    2021   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcopt.F90

    r2633 r2636  
    2121   USE sms_lobster 
    2222   USE prtctl_trc      ! Print control for debbuging 
     23   USE lib_mpp         ! MPP library 
    2324 
    2425   IMPLICIT NONE 
     
    6970 
    7071      IF( (wrk_in_use(2, 1,2)) .OR. (wrk_in_use(3, 2,3)) )THEN 
    71          CALL ctl_stop('trc_opt : requested workspace arrays unavailable.') 
    72          RETURN 
     72         CALL ctl_stop('trc_opt : requested workspace arrays unavailable')   ;   RETURN 
    7373      END IF 
    7474 
     
    138138      ENDIF 
    139139      ! 
    140       IF( (wrk_not_released(2, 1,2)) .OR. (wrk_not_released(3, 2,3)) )THEN 
    141          CALL ctl_stop('trc_opt : failed to release workspace arrays.') 
    142       END IF 
     140      IF( wrk_not_released(2, 1,2)  .OR.  wrk_not_released(3, 2,3)  )   & 
     141          CALL ctl_stop('trc_opt : failed to release workspace arrays') 
    143142      ! 
    144143   END SUBROUTINE trc_opt 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90

    r2633 r2636  
    1313   !!   trcsms_lobster        :  Time loop of passive tracers sms 
    1414   !!---------------------------------------------------------------------- 
    15    USE oce_trc         ! 
     15   USE oce_trc          ! 
    1616   USE trc 
    1717   USE trcbio 
     
    2323   USE trdmod_trc 
    2424   USE trdmld_trc 
     25   USE lib_mpp          ! MPP library 
    2526 
    2627   IMPLICIT NONE 
     
    3233   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    3334   !! $Id$  
    34    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     35   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3536   !!---------------------------------------------------------------------- 
    36  
    3737CONTAINS 
    3838 
     
    5353      !! -------------------------------------------------------------------- 
    5454 
    55       IF(wrk_in_use(3,1))THEN 
    56          CALL ctl_stop('trc_sms_lobster : requested workspace array unavailable.') 
    57          RETURN 
    58       END IF 
     55      IF( wrk_in_use(3,1) ) THEN 
     56         CALL ctl_stop('trc_sms_lobster : requested workspace array unavailable')   ;   RETURN 
     57      ENDIF 
    5958 
    6059      CALL trc_opt( kt )      ! optical model 
     
    7271      IF( lk_trdmld_trc )  CALL trd_mld_bio( kt )   ! trends: Mixed-layer 
    7372 
    74       IF(wrk_not_released(3,1))THEN 
    75          CALL ctl_stop('trc_sms_lobster : failed to release workspace array.') 
    76       END IF 
    77  
     73      IF( wrk_not_released(3,1) )   CALL ctl_stop('trc_sms_lobster : failed to release workspace array.') 
     74      ! 
    7875   END SUBROUTINE trc_sms_lobster 
    7976 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90

    r2633 r2636  
    1010   !!---------------------------------------------------------------------- 
    1111   !!   'key_top'                                                TOP models 
    12    !!---------------------------------------------------------------------- 
    1312   !!---------------------------------------------------------------------- 
    1413   !!   trc_adv      : compute ocean tracer advection trend 
     
    2726   USE ldftra_oce      ! lateral diffusion coefficient on tracers 
    2827   USE in_out_manager  ! I/O manager 
    29    USE prtctl_trc          ! Print control 
     28   USE lib_mpp         ! MPP library 
     29   USE prtctl_trc      ! Print control 
    3030 
    3131   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90

    r2610 r2636  
    33   !!                       ***  MODULE  trcnxt  *** 
    44   !! Ocean passive tracers:  time stepping on passives tracers 
    5    !!====================================================================== 
    65   !!====================================================================== 
    76   !! History :  7.0  !  1991-11  (G. Madec)  Original code 
     
    2726   !!   trc_nxt     : time stepping on passive tracers 
    2827   !!---------------------------------------------------------------------- 
    29    !! * Modules used 
    3028   USE oce_trc         ! ocean dynamics and tracers variables 
    3129   USE trc             ! ocean passive tracers variables 
     
    4341   PRIVATE 
    4442 
    45    !! * Routine accessibility 
    46    PUBLIC trc_nxt          ! routine called by step.F90 
    47    PUBLIC trc_nxt_alloc    ! routine called by nemogcm.F90 
     43   PUBLIC   trc_nxt          ! routine called by step.F90 
     44   PUBLIC   trc_nxt_alloc    ! routine called by nemogcm.F90 
    4845 
    4946   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) ::   r2dt 
     47 
    5048   !!---------------------------------------------------------------------- 
    5149   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    5250   !! $Id$  
    53    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     51   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    5452   !!---------------------------------------------------------------------- 
    55  
    5653CONTAINS 
    5754 
    58    FUNCTION trc_nxt_alloc() 
     55   INTEGER FUNCTION trc_nxt_alloc() 
    5956      !!---------------------------------------------------------------------- 
    6057      !!                   ***  ROUTINE trc_nxt_alloc  *** 
    6158      !!---------------------------------------------------------------------- 
    62       INTEGER :: trc_nxt_alloc 
     59      USE lib_mpp, ONLY: ctl_warn 
    6360      !!---------------------------------------------------------------------- 
    64  
     61      ! 
    6562      ALLOCATE( r2dt(jpk), Stat=trc_nxt_alloc) 
    66  
    67       IF(trc_nxt_alloc /= 0)THEN 
    68          CALL ctl_warn('trc_nxt_alloc : failed to allocate array.') 
    69       ENDIF 
    70  
     63      ! 
     64      IF( trc_nxt_alloc /= 0 )   CALL ctl_warn('trc_nxt_alloc : failed to allocate array') 
     65      ! 
    7166   END FUNCTION trc_nxt_alloc 
    7267 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90

    r2633 r2636  
    1616   !!   trc_sbc      : update the tracer trend at ocean surface 
    1717   !!---------------------------------------------------------------------- 
    18    !! * Modules used 
    19    USE oce_trc             ! ocean dynamics and active tracers variables 
    20    USE trc                 ! ocean  passive tracers variables 
    21    USE prtctl_trc          ! Print control for debbuging 
     18   USE oce_trc         ! ocean dynamics and active tracers variables 
     19   USE trc             ! ocean  passive tracers variables 
     20   USE prtctl_trc      ! Print control for debbuging 
    2221   USE trdmod_oce 
    2322   USE trdtra 
     23   USE lib_mpp         ! MPP library 
    2424 
    2525   IMPLICIT NONE 
    2626   PRIVATE 
    2727 
    28    !! * Routine accessibility 
    29    PUBLIC trc_sbc              ! routine called by step.F90 
     28   PUBLIC   trc_sbc   ! routine called by step.F90 
    3029 
    3130   !! * Substitutions 
     
    3433   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    3534   !! $Id$  
    36    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
     35   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    3736   !!---------------------------------------------------------------------- 
    38  
    3937CONTAINS 
    4038 
     
    6260      USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    6361      USE wrk_nemo, zemps => wrk_2d_1 
    64       !! * Arguments 
     62      ! 
    6563      INTEGER, INTENT( in ) ::   kt          ! ocean time-step index 
    66  
    67       !! * Local declarations 
     64      ! 
    6865      INTEGER  ::   ji, jj, jn           ! dummy loop indices 
    6966      REAL(wp) ::   zsrau, zse3t   ! temporary scalars 
     
    7370 
    7471      IF(wrk_in_use(2, 1))THEN 
    75          CALL ctl_stop('trc_sbc: requested workspace array unavailable.') 
    76          RETURN 
     72         CALL ctl_stop('trc_sbc: requested workspace array unavailable.')   ;   RETURN 
    7773      END IF 
    7874 
     
    126122      ENDIF 
    127123 
    128       IF(wrk_not_released(2, 1))THEN 
    129          CALL ctl_stop('trc_sbc: failed to release workspace array.') 
    130       END IF 
    131  
     124      IF( wrk_not_released(2, 1) )   CALL ctl_stop('trc_sbc: failed to release workspace array') 
     125      ! 
    132126   END SUBROUTINE trc_sbc 
    133127 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90

    r2606 r2636  
    2020   USE trazdf_exp      ! vertical diffusion: explicit (tra_zdf_exp     routine) 
    2121   USE trazdf_imp      ! vertical diffusion: implicit (tra_zdf_imp     routine) 
     22   USE trdmod_oce 
     23   USE trdtra 
    2224   USE prtctl_trc      ! Print control 
    2325   USE in_out_manager  ! I/O manager 
    2426   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    25    USE trdmod_oce 
    26    USE trdtra 
     27   USE lib_mpp         ! MPP library 
    2728 
    2829   IMPLICIT NONE 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90

    r2633 r2636  
    2323   USE zdfddm  , ONLY : avs  !: salinity vertical diffusivity coeff. at w-point 
    2424# endif 
    25    USE trcnam_trp      ! passive tracers transport namelist variables 
     25   USE trcnam_trp        ! passive tracers transport namelist variables 
    2626   USE trdmod_trc_oce    ! definition of main arrays used for trends computations 
    2727   USE in_out_manager    ! I/O manager 
     
    3030   USE ioipsl            ! NetCDF library 
    3131   USE lbclnk            ! ocean lateral boundary conditions (or mpp link) 
     32   USE lib_mpp           ! MPP library 
    3233   USE trdmld_trc_rst    ! restart for diagnosing the ML trends 
    3334   USE prtctl            ! print control 
     
    4748   CHARACTER (LEN=40) ::  clhstnam                                ! name of the trends NetCDF file 
    4849   INTEGER ::   nmoymltrd 
    49    INTEGER ::   ndextrd1(jpi*jpj) 
     50   INTEGER, ALLOCATABLE, SAVE, DIMENSION(:) ::   ndextrd1 
    5051   INTEGER, DIMENSION(jptra) ::   nidtrd, nh_t 
    5152   INTEGER ::   ndimtrd1                         
     
    8788               ztmltrdbio2(jpi,jpj,jpdiabio)     , & 
    8889#endif 
    89                Stat=trd_mld_trc_alloc) 
    90  
    91       IF(trd_mld_trc_alloc/=0)THEN 
    92          CALL ctl_warn('trd_mld_trc_alloc : failed to allocate arrays.') 
    93       END IF 
    94  
     90         &     ndextrd1(jpi*jpj)                 ,  STAT=trd_mld_trc_alloc) 
     91         ! 
     92      IF( lk_mpp                )   CALL mpp_sum ( trd_mld_trc_alloc ) 
     93      IF( trd_mld_trc_alloc /=0 )   CALL ctl_warn('trd_mld_trc_alloc : failed to allocate arrays.') 
    9594   END FUNCTION trd_mld_trc_alloc 
    9695 
     
    125124      !!---------------------------------------------------------------------- 
    126125 
    127       IF(wrk_in_use(2, 1))THEN 
    128          CALL ctl_stop('trd_mld_trc_zint : requested workspace array unavailable.') 
    129          RETURN 
     126      IF( wrk_in_use(2, 1) ) THEN 
     127         CALL ctl_stop('trd_mld_trc_zint : requested workspace array unavailable')   ;   RETURN 
    130128      END IF 
    131129 
     
    213211      END SELECT 
    214212 
    215       IF(wrk_not_released(2, 1))THEN 
    216          CALL ctl_stop('trd_mld_trc_zint : failed to release workspace array.') 
    217       END IF 
    218  
     213      IF( wrk_not_released(2, 1) )   CALL ctl_stop('trd_mld_trc_zint : failed to release workspace array.') 
     214      ! 
    219215    END SUBROUTINE trd_mld_trc_zint 
    220      
     216 
     217 
    221218    SUBROUTINE trd_mld_bio_zint( ptrc_trdmld, ktrd ) 
    222219      !!---------------------------------------------------------------------- 
     
    387384      !!       - See NEMO documentation (in preparation) 
    388385      !!---------------------------------------------------------------------- 
    389       USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 
    390       USE wrk_nemo, wrk_3d_1, wrk_3d_2, wrk_3d_3, wrk_3d_4, & 
    391                     wrk_3d_5, wrk_3d_6, wrk_3d_7, wrk_3d_8, & 
    392                     wrk_3d_9 
     386      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
     387      USE wrk_nemo, ONLY:   wrk_3d_1, wrk_3d_2, wrk_3d_3, wrk_3d_4 
     388      USE wrk_nemo, ONLY:   wrk_3d_5, wrk_3d_6, wrk_3d_7, wrk_3d_8, wrk_3d_9 
     389      ! 
    393390      INTEGER, INTENT( in ) ::   kt                               ! ocean time-step index 
    394391      INTEGER ::   ji, jj, jk, jl, ik, it, itmod, jn 
     
    414411      !!---------------------------------------------------------------------- 
    415412 
    416       IF(wrk_in_use(3, 1,2,3,4,5,6,7,8,9))THEN 
    417          CALL ctl_stop('trd_mld_trc : requested workspace arrays unavailable.') 
    418          RETURN 
    419       END IF 
     413      IF( wrk_in_use(3, 1,2,3,4,5,6,7,8,9) ) THEN 
     414         CALL ctl_stop('trd_mld_trc : requested workspace arrays unavailable')   ;   RETURN 
     415      ENDIF 
    420416      ! Set-up pointers into sub-arrays of workspaces 
    421417      ztmltot   => wrk_3d_1(:,:,1:jptra) 
  • branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trdmod_trc_oce.F90

    r2610 r2636  
    44   !! Ocean trends :   set tracer and momentum trend variables 
    55   !!====================================================================== 
    6    !!---------------------------------------------------------------------- 
    7    !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
    8    !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/TRD/trdmld_oce.F90,v 1.2 2005/03/27 18:35:23 opalod Exp $  
    9    !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    10    !!---------------------------------------------------------------------- 
    11 #if defined key_top 
     6#if defined key_top   ||   defined key_esopa 
    127   !!---------------------------------------------------------------------- 
    138   !!   'key_top'                                                TOP models 
    149   !!---------------------------------------------------------------------- 
    1510 
    16    USE par_oce                        ! ocean parameters 
    17    USE par_trc                        ! passive tracers parameters 
     11   USE par_oce       ! ocean parameters 
     12   USE par_trc       ! passive tracers parameters 
    1813 
    1914   IMPLICIT NONE 
    2015   PUBLIC 
    2116 
    22    !!* Namelist namtoptrd:  diagnostics on passive tracers trends 
    23    INTEGER  ::    nn_trd_trc                 !: time step frequency dynamics and tracers trends 
    24    INTEGER  ::    nn_ctls_trc                !: control surface type for trends vertical integration 
     17   !                                         !!* Namelist namtoptrd:  diagnostics on passive tracers trends 
     18   INTEGER  ::    nn_trd_trc                  !: time step frequency dynamics and tracers trends 
     19   INTEGER  ::    nn_ctls_trc                 !: control surface type for trends vertical integration 
    2520   REAL(wp) ::    rn_ucf_trc                  !: unit conversion factor (for netCDF trends outputs) 
    26    LOGICAL  ::    ln_trdmld_trc_instant    !: flag to diagnose inst./mean ML trc trends 
    27    LOGICAL  ::    ln_trdmld_trc_restart    !: flag to restart mixed-layer trc diagnostics 
    28    CHARACTER(len=50) ::  cn_trdrst_trc_in  !: suffix of pass. tracer restart name (input) 
    29    CHARACTER(len=50) ::  cn_trdrst_trc_out !: suffix of pass. tracer restart name (output) 
     21   LOGICAL  ::    ln_trdmld_trc_instant       !: flag to diagnose inst./mean ML trc trends 
     22   LOGICAL  ::    ln_trdmld_trc_restart       !: flag to restart mixed-layer trc diagnostics 
     23   CHARACTER(len=50) ::  cn_trdrst_trc_in     !: suffix of pass. tracer restart name (input) 
     24   CHARACTER(len=50) ::  cn_trdrst_trc_out    !: suffix of pass. tracer restart name (output) 
    3025   LOGICAL, DIMENSION (jptra) ::   ln_trdtrc  !: large trends diagnostic to write or not (namelist) 
    3126 
    3227# if defined key_trdtrc && defined key_iomput 
    3328   LOGICAL, PARAMETER ::   lk_trdtrc = .TRUE.  
    34 #else 
     29# else 
    3530   LOGICAL, PARAMETER ::   lk_trdtrc = .FALSE.   !: ML trend flag 
    36 #endif 
     31# endif 
    3732 
    38 #if defined key_trdmld_trc 
     33# if defined key_trdmld_trc   ||   defined key_esopa 
    3934   !!---------------------------------------------------------------------- 
    4035   !!   'key_trdmld_trc'                     mixed layer trends diagnostics 
     
    108103      tmltrdm_trc                                !: total cumulative trends over the analysis window 
    109104 
    110 #else 
     105# else 
    111106   LOGICAL, PARAMETER ::   lk_trdmld_trc = .FALSE.   !: ML trend flag 
    112 #endif 
     107# endif 
    113108 
    114 #if defined key_lobster 
     109# if defined key_lobster 
    115110   CHARACTER(LEN=80) :: clname_bio, ctrd_bio(jpdiabio,2) 
    116111   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::  & 
     
    121116      tmltrd_csum_ub_bio                         !: before (prev. analysis period) cumulated sum over the 
    122117                                                 !: upper triangle 
    123 #endif 
    124  
    125 #else 
     118# endif 
    126119   !!---------------------------------------------------------------------- 
    127    !!  Empty module :                                     No passive tracer 
     120   !! NEMO/TOP 3.3 , NEMO Consortium (2010) 
     121   !! $Header: /home/opalod/NEMOCVSROOT/NEMO/OPA_SRC/TRD/trdmld_oce.F90,v 1.2 2005/03/27 18:35:23 opalod Exp $  
     122   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 
    128123   !!---------------------------------------------------------------------- 
    129 #endif 
    130  
    131 #if defined key_top 
    132124CONTAINS 
    133125 
    134    FUNCTION trd_mod_trc_oce_alloc() 
     126   INTEGER FUNCTION trd_mod_trc_oce_alloc() 
    135127      !!---------------------------------------------------------------------- 
    136128      !!         *** ROUTINE trd_mod_trc_oce_alloc *** 
    137129      !!---------------------------------------------------------------------- 
    138       USE in_out_manager, ONLY: ctl_warn 
    139       ! 
    140       INTEGER :: trd_mod_trc_oce_alloc 
    141       ! Locals 
     130      USE lib_mpp, ONLY: ctl_warn 
    142131      INTEGER :: ierr(2)