Changeset 2636
- Timestamp:
- 2011-03-01T20:04:06+01:00 (13 years ago)
- 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 15 15 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 16 16 !!---------------------------------------------------------------------- 17 USE par_ice_2 17 USE par_ice_2 ! LIM parameters 18 18 19 19 IMPLICIT NONE 20 20 PRIVATE 21 21 22 ! Routine accessibility23 22 PUBLIC dom_ice_alloc_2 ! Called from nemogcm.F90 24 23 … … 42 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tmi !: ice mask: =1 if ice thick > 0 43 42 # 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 44 70 45 71 #else … … 49 75 #endif 50 76 !!====================================================================== 51 #if defined key_lim252 CONTAINS53 54 FUNCTION dom_ice_alloc_2()55 USE in_out_manager, ONLY: ctl_warn56 IMPLICIT none57 INTEGER :: dom_ice_alloc_258 INTEGER :: ierr(2)59 60 ierr(:) = 061 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_vp68 akappa(jpi,jpj,2,2), bkappa(jpi,jpj,2,2), &69 alambd(jpi,jpj,2,2,2,2), &70 #else71 tmv(jpi,jpj), tmf(jpi,jpj), tmi(jpi,jpj), &72 #endif73 Stat=ierr(2))74 75 dom_ice_alloc_2 = MAXVAL(ierr)76 77 IF(dom_ice_alloc_2 /= 0)THEN78 CALL ctl_warn('dom_ice_alloc_2: failed to allocate arrays.')79 END IF80 81 END FUNCTION dom_ice_alloc_282 #endif83 84 77 END MODULE dom_ice_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/ice_2.F90
r2613 r2636 12 12 !! 'key_lim2' : LIM 2.0 sea-ice model 13 13 !!---------------------------------------------------------------------- 14 USE par_ice_2 14 USE par_ice_2 ! LIM sea-ice parameters 15 15 16 16 IMPLICIT NONE … … 127 127 CONTAINS 128 128 129 FUNCTION ice_alloc_2()129 INTEGER FUNCTION ice_alloc_2() 130 130 !!----------------------------------------------------------------- 131 131 !! *** FUNCTION ice_alloc_2 *** 132 132 !!----------------------------------------------------------------- 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 136 135 !!----------------------------------------------------------------- 137 138 136 ierr(:) = 0 139 137 ! 140 138 ALLOCATE( ahiu(jpi,jpj) , pahu(jpi,jpj) , & 141 139 & ahiv(jpi,jpj) , pahv(jpi,jpj) , ust2s(jpi,jpj) , STAT=ierr(1) ) 142 140 ! 143 141 !* Ice Rheology 144 142 #if defined key_lim2_vp … … 149 147 stress12_i(jpi,jpj) , shear_i(jpi,jpj) , hicm(jpi,jpj) , STAT=ierr(2) ) 150 148 #endif 151 152 149 ALLOCATE( rdvosif(jpi,jpj) , rdvobif(jpi,jpj) , & 153 150 & fdvolif(jpi,jpj) , rdvonif(jpi,jpj) , & … … 181 178 ALLOCATE(sxst (jpi,jpj) , syst (jpi,jpj) , sxxst (jpi,jpj) , & 182 179 & syyst (jpi,jpj) , sxyst (jpi,jpj) , STAT=ierr(9)) 183 180 ! 184 181 ice_alloc_2 = MAXVAL( ierr ) 185 182 ! 186 183 IF( ice_alloc_2 /= 0 ) CALL ctl_warn('ice_alloc_2: failed to allocate arrays.') 187 184 ! -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90
r2626 r2636 30 30 USE limsbc_2 ! LIM2 surface boundary condition 31 31 USE in_out_manager ! I/O manager 32 32 USE lib_mpp ! MPP library 33 33 34 IMPLICIT NONE 34 35 PRIVATE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limadv_2.F90
r2633 r2636 22 22 USE lbclnk 23 23 USE in_out_manager ! I/O manager 24 USE lib_mpp ! MPP library 24 25 USE prtctl ! Print control 25 26 … … 79 80 IF( wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN 80 81 CALL ctl_stop( 'lim_adv_x_2 : requested workspace arrays unavailable.' ) ; RETURN 81 END 82 ENDIF 82 83 83 84 ! Limitation of moments. … … 224 225 ENDIF 225 226 ! 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.' ) 229 229 ! 230 230 END SUBROUTINE lim_adv_x_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limdia_2.F90
r2613 r2636 12 12 !! 'key_lim2' : LIM 2.0 sea-ice model 13 13 !!---------------------------------------------------------------------- 14 !!----------------------------------------------------------------------15 14 !! lim_dia_2 : computation of the time evolution of keys var. 16 15 !! lim_dia_init_2 : initialization and namelist read … … 24 23 USE limistate_2 ! 25 24 USE in_out_manager ! I/O manager 25 USE lib_mpp ! MPP library 26 26 27 27 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limdmp_2.F90
r2528 r2636 13 13 !! lim_dmp_2 : ice model damping 14 14 !!---------------------------------------------------------------------- 15 USE in_out_manager ! I/O manager16 15 USE ice_2 ! ice variables 17 16 USE sbc_oce, ONLY : nn_fsbc ! for fldread 18 17 USE dom_oce ! for mi0; mi1 etc ... 19 18 USE fldread ! read input fields 20 19 USE in_out_manager ! I/O manager 20 USE lib_mpp ! MPP library 21 21 22 IMPLICIT NONE 22 23 PRIVATE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limdyn_2.F90
r2633 r2636 72 72 73 73 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 .' ) ; RETURN75 END 74 CALL ctl_stop( 'lim_dyn_2 : requested workspace arrays unavailable' ) ; RETURN 75 ENDIF 76 76 zind => wrk_1d_1(1:jpj) ! Set-up pointers to sub-arrays of workspaces 77 77 zmsk => wrk_1d_2(1:jpj) … … 210 210 IF(ln_ctl) CALL prt_ctl(tab2d_1=ust2s , clinfo1=' lim_dyn : ust2s :') 211 211 ! 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') 215 214 ! 216 215 END SUBROUTINE lim_dyn_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limhdf_2.F90
r2633 r2636 149 149 ENDIF 150 150 ! 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') 154 152 ! 155 153 END SUBROUTINE lim_hdf_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90
r2633 r2636 19 19 USE lbclnk 20 20 USE in_out_manager 21 USE lib_mpp ! MPP library 21 22 22 23 IMPLICIT NONE … … 56 57 !!--------------------------------------------------------------------- 57 58 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 62 62 63 63 IF(lwp) THEN … … 281 281 area(:,:) = e1t(:,:) * e2t(:,:) 282 282 ! 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') 286 284 ! 287 285 END SUBROUTINE lim_msh_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90
r2633 r2636 57 57 CONTAINS 58 58 59 FUNCTION lim_rhg_alloc_2()59 INTEGER FUNCTION lim_rhg_alloc_2() 60 60 !!------------------------------------------------------------------- 61 61 !! *** FUNCTION lim_rhg_alloc_2 *** 62 62 !!------------------------------------------------------------------- 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 ! 79 74 END FUNCTION lim_rhg_alloc_2 80 75 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limsbc_2.F90
r2633 r2636 30 30 USE albedo ! albedo parameters 31 31 USE lbclnk ! ocean lateral boundary condition - MPP exchanges 32 USE lib_mpp ! MPP library 32 33 USE in_out_manager ! I/O manager 33 34 USE diaar5, ONLY : lk_diaar5 … … 62 63 CONTAINS 63 64 64 FUNCTION lim_sbc_alloc_2()65 INTEGER FUNCTION lim_sbc_alloc_2() 65 66 !!------------------------------------------------------------------- 66 67 !! *** ROUTINE lim_sbc_alloc_2 *** 67 68 !!------------------------------------------------------------------- 68 INTEGER :: lim_sbc_alloc_269 !!-------------------------------------------------------------------70 !71 69 ALLOCATE( soce_0(jpi,jpj) , utau_oce(jpi,jpj) , & 72 70 & sice_0(jpi,jpj) , vtau_oce(jpi,jpj) , tmod_io(jpi,jpj), STAT=lim_sbc_alloc_2) … … 117 115 118 116 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 122 119 zalb => wrk_3d_4(:,:,1:1) ! Set-up pointers to sub-arrays of 3d workspaces 123 120 zalbp => wrk_3d_5(:,:,1:1) … … 253 250 ENDIF 254 251 ! 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') 258 254 ! 259 255 END SUBROUTINE lim_sbc_flx_2 … … 297 293 !!--------------------------------------------------------------------- 298 294 ! 299 IF( wrk_in_use(2, 1,2))THEN295 IF( wrk_in_use(2, 1,2) ) THEN 300 296 CALL ctl_stop('lim_sbc_tau_2 : requested workspace arrays unavailable.') ; RETURN 301 END 297 ENDIF 302 298 ! 303 299 SELECT CASE( cp_ice_msh ) … … 413 409 & tab2d_2=vtau, clinfo2=' vtau : ' , mask2=vmask ) 414 410 ! 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') 416 412 ! 417 413 END SUBROUTINE lim_sbc_tau_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90
r2633 r2636 116 116 !!------------------------------------------------------------------- 117 117 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 123 122 124 123 IF( kt == nit000 ) CALL lim_thd_init_2 ! Initialization (first time-step only) … … 521 520 ENDIF 522 521 ! 523 IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10) .OR. &524 wrk_not_released(3, 4) ) THEN522 IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10) .OR. & 523 wrk_not_released(3, 4) ) THEN 525 524 CALL ctl_stop('lim_thd_2 : failed to release workspace arrays') 526 END 525 ENDIF 527 526 ! 528 527 END SUBROUTINE lim_thd_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limthd_lac_2.F90
r2633 r2636 7 7 8 8 !!---------------------------------------------------------------------- 9 !! lim_lat_acr_2 10 !! * Modules used9 !! lim_lat_acr_2 : lateral accretion of ice 10 !!---------------------------------------------------------------------- 11 11 USE par_oce ! ocean parameters 12 12 USE phycst … … 14 14 USE ice_2 15 15 USE limistate_2 16 16 USE lib_mpp ! MPP library 17 17 18 IMPLICIT NONE 18 19 PRIVATE 19 20 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 24 23 REAL(wp) :: & ! constant values 25 24 epsi20 = 1.e-20 , & … … 27 26 zzero = 0.e0 , & 28 27 zone = 1.e0 28 29 29 !!---------------------------------------------------------------------- 30 30 !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010) … … 70 70 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 71 71 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 ! 75 73 INTEGER , INTENT(IN):: & 76 74 kideb , & ! start point on which the the computation is applied 77 75 kiut ! end point on which the the computation is applied 78 76 79 ! !* Local variables77 ! * Local variables 80 78 INTEGER :: & 81 79 ji , & ! dummy loop indices … … 106 104 !!--------------------------------------------------------------------- 107 105 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 112 109 ! Set-up pointers to sub-arrays of workspace arrays 113 110 zqbgow => wrk_1d_1(1:jpij) … … 235 232 END DO 236 233 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 ! 241 236 END SUBROUTINE lim_thd_lac_2 242 237 #else 243 !! ======================================================================238 !!---------------------------------------------------------------------- 244 239 !! *** MODULE limthd_lac_2 *** 245 240 !! no sea ice model 246 !! ======================================================================241 !!---------------------------------------------------------------------- 247 242 CONTAINS 248 243 SUBROUTINE lim_thd_lac_2 ! Empty routine 249 244 END SUBROUTINE lim_thd_lac_2 250 245 #endif 246 !!====================================================================== 251 247 END MODULE limthd_lac_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limthd_zdf_2.F90
r2633 r2636 11 11 !! 'key_lim2' LIM 2.0 sea-ice model 12 12 !!---------------------------------------------------------------------- 13 !!----------------------------------------------------------------------14 13 !! lim_thd_zdf_2 : vertical accr./abl. and lateral ablation of sea ice 15 14 !!---------------------------------------------------------------------- 16 !! * Modules used17 15 USE par_oce ! ocean parameters 18 16 USE phycst ! ??? … … 21 19 USE limistate_2 22 20 USE in_out_manager 21 USE lib_mpp ! MPP library 23 22 USE cpl_oasis3, ONLY : lk_cpl 24 23 … … 35 34 !! NEMO/LIM2 3.3 , UCL - NEMO Consortium (2010) 36 35 !! $Id$ 37 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)36 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 38 37 !!---------------------------------------------------------------------- 39 40 38 CONTAINS 41 39 … … 170 168 171 169 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 177 174 178 175 ztsmlt => wrk_1d_1(1:jpij) … … 808 805 END DO 809 806 ! 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.') 815 811 ! 816 812 END SUBROUTINE lim_thd_zdf_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90
r2633 r2636 79 79 !--------------------------------------------------------------------- 80 80 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 85 84 86 85 IF( kt == nit000 ) CALL lim_trp_init_2 ! Initialization (first time-step only) … … 274 273 ENDIF 275 274 ! 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') 279 276 ! 280 277 END SUBROUTINE lim_trp_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/limwri_2.F90
r2633 r2636 26 26 USE ice_2 27 27 28 USE dianam ! build name of file (routine) 28 29 USE lbclnk 29 USE dianam ! build name of file (routine)30 30 USE in_out_manager 31 USE lib_mpp ! MPP library 31 32 USE iom 32 33 USE ioipsl … … 69 70 CONTAINS 70 71 71 FUNCTION lim_wri_alloc_2()72 INTEGER FUNCTION lim_wri_alloc_2() 72 73 !!------------------------------------------------------------------- 73 74 !! *** ROUTINE lim_wri_alloc_2 *** 74 75 !!------------------------------------------------------------------- 75 IMPLICIT none76 INTEGER :: lim_wri_alloc_277 !!-------------------------------------------------------------------78 !79 76 ALLOCATE( ndex51(jpij), zcmo(jpi,jpj,jpnoumax), STAT=lim_wri_alloc_2) 80 77 ! … … 115 112 !!------------------------------------------------------------------- 116 113 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 121 117 !--------------------! 122 118 IF( kt == nit000 ) THEN ! Initialisation ! … … 211 207 IF( ( nn_fsbc * niter ) >= nitend ) CALL histclo( nice ) 212 208 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 ! 217 211 END SUBROUTINE lim_wri_2 218 212 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_2/thd_ice_2.F90
r2590 r2636 12 12 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 13 13 !!---------------------------------------------------------------------- 14 !! * Modules used15 14 USE par_ice_2 16 15 … … 85 84 tbif_1d !: corresponding to the 2D var tbif 86 85 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 !!---------------------------------------------------------------------- 88 91 CONTAINS 89 92 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 95 96 INTEGER :: ierr(4) 96 97 !!---------------------------------------------------------------------- 98 ! 97 99 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 ! 116 118 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 ! 122 121 END FUNCTION thd_ice_alloc_2 123 122 124 123 #endif 124 !!====================================================================== 125 125 END MODULE thd_ice_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/dom_ice.F90
r2612 r2636 9 9 USE par_ice ! LIM-3 parameter 10 10 USE in_out_manager ! I/O manager 11 USE lib_mpp ! MPP library 11 12 12 13 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r2612 r2636 13 13 USE par_ice ! LIM sea-ice parameters 14 14 USE in_out_manager ! I/O manager 15 USE lib_mpp ! MPP library 15 16 16 17 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90
r2626 r2636 64 64 ! 65 65 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') 67 67 ! 68 68 ! ! adequation jpk versus ice/snow layers/categories -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limadv.F90
r2633 r2636 21 21 USE in_out_manager ! I/O manager 22 22 USE prtctl ! Print control 23 USE lib_mpp ! MPP library 23 24 24 25 IMPLICIT NONE … … 75 76 76 77 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.') ; RETURN78 END 78 CALL ctl_stop('lim_adv_x: requested workspace arrays unavailable') ; RETURN 79 ENDIF 79 80 80 81 ! Limitation of moments. … … 223 224 ENDIF 224 225 ! 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') 228 228 ! 229 229 END SUBROUTINE lim_adv_x … … 263 263 !--------------------------------------------------------------------- 264 264 265 IF( wrk_in_use(2, 11,12,13,14,15,16,17,18,19,20,21) ) THEN266 CALL ctl_stop( 'lim_adv_y : requested workspace arrays unavailable.') ; RETURN267 END 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 268 268 269 269 ! Limitation of moments. … … 413 413 ENDIF 414 414 ! 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') 418 417 ! 419 418 END SUBROUTINE lim_adv_y -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90
r2633 r2636 69 69 70 70 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.') ; RETURN72 END 71 CALL ctl_stop('lim_dyn : requested workspace arrays unavailable') ; RETURN 72 ENDIF 73 73 zind => wrk_1d_1(1:jpj) ! Set-up pointers to sub-arrays of workspaces 74 74 zmsk => wrk_1d_2(1:jpj) … … 212 212 ENDIF 213 213 ! 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' ) 217 216 ! 218 217 END SUBROUTINE lim_dyn -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limhdf.F90
r2633 r2636 63 63 64 64 IF( wrk_in_use(2, 11,12,13,14,15,16) ) THEN 65 CALL ctl_stop( 'lim_hdf: ERROR:requested workspace arrays unavailable' ) ; RETURN66 END 65 CALL ctl_stop( 'lim_hdf: requested workspace arrays unavailable' ) ; RETURN 66 ENDIF 67 67 68 68 ! !== Initialisation ==! … … 146 146 ENDIF 147 147 ! 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') 151 149 ! 152 150 END SUBROUTINE lim_hdf -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
r2633 r2636 24 24 USE in_out_manager ! I/O manager 25 25 USE lbclnk ! lateral boundary condition - MPP exchanges 26 USE lib_mpp ! MPP library 26 27 27 28 IMPLICIT NONE … … 73 74 74 75 IF( wrk_in_use(1, 1,2) ) THEN 75 CALL ctl_stop( 'lim_istate : requested workspace arrays unavailable.' ) ; RETURN76 END 76 CALL ctl_stop( 'lim_istate: requested workspace arrays unavailable' ) ; RETURN 77 ENDIF 77 78 zgfactorn => wrk_1d_1(1:jpm) ; zhin => wrk_1d_3(1:jpm) ! Set-up pointers to sub-arrays of workspaces 78 79 zgfactors => wrk_1d_2(1:jpm) ; zhis => wrk_1d_4(1:jpm) … … 516 517 CALL lbc_lnk( fsbbq , 'T', 1. ) 517 518 ! 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') 521 520 ! 522 521 END SUBROUTINE lim_istate -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90
r2633 r2636 24 24 USE limcons ! LIM 25 25 USE in_out_manager ! I/O manager 26 USE prtctl ! Print control27 26 USE lbclnk ! lateral boundary condition - MPP exchanges 28 27 USE lib_mpp ! MPP library 28 USE prtctl ! Print control 29 29 USE wrk_nemo ! workspace manager 30 30 … … 78 78 CONTAINS 79 79 80 FUNCTION lim_itd_me_alloc()80 INTEGER FUNCTION lim_itd_me_alloc() 81 81 !!---------------------------------------------------------------------! 82 82 !! *** ROUTINE lim_itd_me_alloc *** 83 83 !!---------------------------------------------------------------------! 84 INTEGER :: lim_itd_me_alloc85 !!---------------------------------------------------------------------!86 !87 84 ALLOCATE( & 88 85 !* Variables shared among ridging subroutines … … 96 93 & dardg1dt(jpi,jpj) , dardg2dt(jpi,jpj) , & 97 94 & 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' ) 102 97 ! 103 98 END FUNCTION lim_itd_me_alloc … … 149 144 150 145 IF( wrk_in_use(2, 1,2,3,4,5,6,7,8) ) THEN 151 CALL ctl_stop(' : requested workspace arrays unavailable.') ; RETURN152 END 146 CALL ctl_stop('lim_itd_me: requested workspace arrays unavailable') ; RETURN 147 ENDIF 153 148 154 149 IF( numit == nstart ) CALL lim_itd_me_init ! Initialization (first time-step only) … … 494 489 END DO 495 490 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') 497 492 ! 498 493 END SUBROUTINE lim_itd_me … … 525 520 526 521 IF( wrk_in_use(2, 1) ) THEN 527 CALL ctl_stop('lim_itd_me_icestrength : requested workspace array unavailable .') ; RETURN528 END 522 CALL ctl_stop('lim_itd_me_icestrength : requested workspace array unavailable') ; RETURN 523 ENDIF 529 524 530 525 !------------------------------------------------------------------------------! … … 678 673 ENDIF ! ksmooth 679 674 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 ! 687 679 END SUBROUTINE lim_itd_me_icestrength 688 680 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limmsh.F90
r2612 r2636 17 17 USE in_out_manager ! I/O manager 18 18 USE lbclnk ! lateral boundary condition - MPP exchanges 19 USE lib_mpp ! MPP library 19 20 20 21 IMPLICIT NONE … … 54 55 55 56 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') 57 58 58 59 ! !== coriolis factor & Equator position ==! -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
r2633 r2636 23 23 USE in_out_manager ! I/O manager 24 24 USE iom ! I/O library 25 USE lib_mpp ! MPP library 25 26 26 27 IMPLICIT NONE … … 103 104 104 105 IF( wrk_in_use(2, 1) ) THEN 105 CALL ctl_stop( 'lim_rst_write : requested workspace arrays unavailable .' ) ; RETURN106 CALL ctl_stop( 'lim_rst_write : requested workspace arrays unavailable' ) ; RETURN 106 107 END IF 107 108 … … 294 295 ENDIF 295 296 ! 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' ) 299 298 ! 300 299 END SUBROUTINE lim_rst_write … … 322 321 IF( wrk_in_use(2, 1) ) THEN 323 322 CALL ctl_stop( 'lim_rst_read : requested workspace arrays unavailable.' ) ; RETURN 324 END 323 ENDIF 325 324 326 325 IF(lwp) THEN -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r2633 r2636 30 30 USE lbclnk ! ocean lateral boundary condition 31 31 USE in_out_manager ! I/O manager 32 USE lib_mpp ! MPP library 32 33 USE prtctl ! Print control 33 34 USE cpl_oasis3, ONLY : lk_cpl … … 58 59 CONTAINS 59 60 60 FUNCTION lim_sbc_alloc()61 INTEGER FUNCTION lim_sbc_alloc() 61 62 !!------------------------------------------------------------------- 62 63 !! *** ROUTINE lim_sbc_alloc *** 63 64 !!------------------------------------------------------------------- 64 INTEGER :: lim_sbc_alloc ! return value65 !!-------------------------------------------------------------------66 !67 65 ALLOCATE( soce_0(jpi,jpj) , utau_oce(jpi,jpj) , & 68 66 & sice_0(jpi,jpj) , vtau_oce(jpi,jpj) , tmod_io(jpi,jpj), STAT=lim_sbc_alloc) 69 67 ! 70 68 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') 73 70 END FUNCTION lim_sbc_alloc 74 71 … … 112 109 113 110 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 .' ) ; RETURN111 CALL ctl_stop( 'lim_sbc_flx : requested workspace arrays unavailable' ) ; RETURN 115 112 ENDIF 116 113 ! Set-up pointers to sub-arrays of 3d workspaces … … 300 297 ENDIF 301 298 ! 302 IF( wrk_not_released(2, 1,2) .OR. wrk_not_released(3, 4,5) ) THEN303 CALL ctl_stop( 'lim_sbc_flx : failed to release workspace arrays.' )304 END IF299 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' ) 305 302 ! 306 303 END SUBROUTINE lim_sbc_flx -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90
r2633 r2636 458 458 ENDIF 459 459 ! 460 IF( wrk_not_released(2, 1) ) CALL ctl_stop( 'lim_thd 460 IF( wrk_not_released(2, 1) ) CALL ctl_stop( 'lim_thd: failed to release workspace arrays' ) 461 461 ! 462 462 END SUBROUTINE lim_thd -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90
r2633 r2636 103 103 104 104 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.') ; RETURN106 END 105 CALL ctl_stop('lim_thd_dh: requestead workspace arrays unavailable') ; RETURN 106 ENDIF 107 107 ! Set-up pointers to sub-arrays of workspace arrays 108 108 zh_i => wrk_1d_1 (1:jpij) ! ice layer thickness … … 700 700 ! 701 701 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') 703 703 ! 704 704 END SUBROUTINE lim_thd_dh -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90
r2633 r2636 122 122 123 123 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 .') ; RETURN124 CALL ctl_stop('lim_thd_dh : requestead workspace arrays unavailable') ; RETURN 125 125 END IF 126 126 … … 687 687 END DO !jk 688 688 ! 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' ) 690 690 ! 691 691 END SUBROUTINE lim_thd_ent -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90
r2633 r2636 28 28 USE wrk_nemo ! workspace manager 29 29 USE in_out_manager ! I/O manager 30 USE lib_mpp ! MPP library 30 31 31 32 IMPLICIT NONE … … 690 691 ! 691 692 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' ) 694 695 ! 695 696 END SUBROUTINE lim_thd_lac -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90
r2633 r2636 23 23 USE wrk_nemo ! workspace manager 24 24 USE in_out_manager ! I/O manager 25 USE lib_mpp ! MPP library 25 26 26 27 IMPLICIT NONE … … 237 238 ENDIF 238 239 ! 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' ) 240 241 ! 241 242 END SUBROUTINE lim_thd_sal -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90
r2633 r2636 80 80 !!--------------------------------------------------------------------- 81 81 82 IF( wrk_in_use( 2, 1,2,3,4,5) ) THEN83 CALL ctl_stop( 'lim_trp : requested workspace arrays unavailable .' ) ; RETURN82 IF( wrk_in_use(2, 1,2,3,4,5) ) THEN 83 CALL ctl_stop( 'lim_trp : requested workspace arrays unavailable' ) ; RETURN 84 84 END IF 85 85 … … 463 463 ENDIF 464 464 ! 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') 466 466 ! 467 467 END SUBROUTINE lim_trp -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90
r2633 r2636 52 52 USE wrk_nemo ! workspace manager 53 53 USE in_out_manager ! I/O manager 54 USE lib_mpp ! MPP library 54 55 55 56 IMPLICIT NONE … … 305 306 306 307 IF( wrk_in_use( 2, 1,2 ) ) THEN 307 CALL ctl_stop( 'lim_var_salprof : requested workspace arrays unavailable.' ) ; RETURN308 CALL ctl_stop( 'lim_var_salprof: requested workspace arrays unavailable' ) ; RETURN 308 309 END IF 309 310 … … 388 389 ENDIF ! num_sal 389 390 ! 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.') 391 392 ! 392 393 END SUBROUTINE lim_var_salprof … … 510 511 ENDIF 511 512 ! 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' ) 513 514 ! 514 515 END SUBROUTINE lim_var_salprof1d -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r2633 r2636 15 15 USE phycst 16 16 USE dom_oce 17 USE in_out_manager18 17 USE sbc_oce ! Surface boundary condition: ocean fields 19 18 USE sbc_ice ! Surface boundary condition: ice fields 20 19 USE dom_ice 21 20 USE ice 21 USE limvar 22 USE in_out_manager 22 23 USE lbclnk 24 USE lib_mpp ! MPP library 23 25 USE par_ice 24 USE limvar25 26 26 27 IMPLICIT NONE … … 70 71 !! modif : 03/06/98 71 72 !!------------------------------------------------------------------- 72 USE wrk_nemo, ONLY: wrk_not_released, wrk_in_use73 USE wrk_nemo, ONLY: zfield => wrk_2d_1 ! 2D workspace74 USE wrk_nemo, ONLY: wrk_3d_1, wrk_3D_2, wrk_3d_3 ! 3D workspace73 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 75 76 ! 76 77 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 8 8 USE par_ice ! LIM-3 parameters 9 9 USE in_out_manager ! I/O manager 10 USE lib_mpp ! MPP library 10 11 11 12 IMPLICIT NONE … … 195 196 thd_ice_alloc = MAXVAL( ierr ) 196 197 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.' ) 200 199 ! 201 200 END FUNCTION thd_ice_alloc -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r2435 r2636 21 21 !! ssh_asm_inc : Apply the SSH increment 22 22 !!---------------------------------------------------------------------- 23 USE in_out_manager ! I/O manager24 23 USE par_oce ! Ocean space and time domain variables 25 24 USE dom_oce ! Ocean space and time domain … … 31 30 USE asmpar ! Parameters for the assmilation interface 32 31 USE c1d ! 1D initialization 32 USE in_out_manager ! I/O manager 33 USE lib_mpp ! MPP library 33 34 34 35 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90
r2633 r2636 21 21 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 22 22 !! $Id$ 23 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)23 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 24 24 !!---------------------------------------------------------------------- 25 26 25 CONTAINS 27 26 … … 36 35 !! 37 36 !!---------------------------------------------------------------------- 38 USE in_out_manager, ONLY: ctl_stop39 37 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 40 38 USE wrk_nemo, ONLY: zglam => wrk_2d_2, & -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DOM/domstp.F90
r2528 r2636 8 8 !! dom_stp : ocean time domain initialization 9 9 !!---------------------------------------------------------------------- 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 14 13 !!---------------------------------------------------------------------- 15 !! * Modules used16 USE oce ! ocean dynamics and tracers17 USE dom_oce ! ocean space and time domain18 USE in_out_manager ! I/O manager14 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 19 18 20 19 IMPLICIT NONE 21 20 PRIVATE 22 21 23 !! * routine accessibility 24 PUBLIC dom_stp ! routine called by inidom.F90 22 PUBLIC dom_stp ! routine called by inidom.F90 25 23 26 24 !! * Substitutions … … 29 27 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 30 28 !! $Id$ 31 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)29 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 32 30 !!---------------------------------------------------------------------- 33 34 31 CONTAINS 35 32 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r2633 r2636 43 43 USE dynspg_ts ! pressure gradient schemes 44 44 USE traswp ! Swap arrays (tra_swp routine) 45 45 USE lib_mpp ! MPP library 46 46 47 IMPLICIT NONE 47 48 PRIVATE … … 55 56 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 56 57 !! $Id$ 57 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)58 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 58 59 !!---------------------------------------------------------------------- 59 60 60 CONTAINS 61 61 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DTA/dtasal.F90
r2618 r2636 18 18 USE oce ! ocean dynamics and tracers 19 19 USE dom_oce ! ocean space and time domain 20 USE phycst ! physical constants 20 21 USE fldread ! read input fields 21 22 USE in_out_manager ! I/O manager 22 USE phycst ! physical constants23 USE lib_mpp ! MPP library 23 24 24 25 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DTA/dtatem.F90
r2618 r2636 18 18 USE oce ! ocean dynamics and tracers 19 19 USE dom_oce ! ocean space and time domain 20 USE phycst ! physical constants 20 21 USE fldread ! read input fields 21 22 USE in_out_manager ! I/O manager 22 USE phycst ! physical constants23 USE lib_mpp ! MPP library 23 24 24 25 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
r2625 r2636 31 31 USE in_out_manager ! I/O manager 32 32 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 33 USE lib_mpp ! MPP library 33 34 34 35 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90
r2625 r2636 14 14 USE dom_oce ! ocean space and time domain 15 15 USE in_out_manager ! I/O manager 16 USE lib_mpp ! MPP library 16 17 17 18 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 18 18 USE trdmod ! ocean dynamics trends 19 19 USE in_out_manager ! I/O manager 20 USE lib_mpp ! MPP library 20 21 USE prtctl ! Print control 21 22 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
r2633 r2636 16 16 USE oce ! ocean dynamics and tracers 17 17 USE dom_oce ! ocean space and time domain 18 USE in_out_manager ! I/O manager19 USE lbclnk ! ocean lateral boundary conditions (or mpp link)20 18 USE trdmod ! ocean dynamics trends 21 19 USE trdmod_oce ! ocean variables trends 20 USE in_out_manager ! I/O manager 22 21 USE prtctl ! Print control 22 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 23 USE lib_mpp ! MPP library 23 24 24 25 IMPLICIT NONE … … 92 93 IF( wrk_in_use(3, 1,2,3,4,5,6,7) .OR. wrk_in_use(4, 1,2,3,4) ) THEN 93 94 CALL ctl_stop('dyn_adv_ubs : requested workspace array unavailable') ; RETURN 94 END 95 ENDIF 95 96 96 97 zfu_t(:,:,:) = 0._wp -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r2633 r2636 36 36 USE prtctl ! Print control 37 37 USE lbclnk ! lateral boundary condition 38 USE lib_mpp ! MPP library 38 39 39 40 IMPLICIT NONE … … 80 81 !! 81 82 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 86 86 CALL ctl_stop('dyn_hpg: requested workspace arrays are unavailable') ; RETURN 87 END 87 ENDIF 88 88 ! 89 89 IF( l_trddyn ) THEN ! Temporary saving of ua and va trends (l_trddyn) … … 111 111 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 112 112 ! 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') 114 114 ! 115 115 END SUBROUTINE dyn_hpg … … 152 152 ! 153 153 IF( lk_vvl .AND. .NOT. ln_hpg_sco ) & 154 & CALL ctl_stop( 154 & CALL ctl_stop('dyn_hpg_init : variable volume key_vvl require the standard jacobian formulation hpg_sco') 155 155 ! 156 156 ! ! Set nhpg from ln_hpg_... flags … … 172 172 IF( ln_hpg_djc ) ioptio = ioptio + 1 173 173 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' ) 175 175 ! 176 176 END SUBROUTINE dyn_hpg_init … … 619 619 !!---------------------------------------------------------------------- 620 620 621 IF( wrk_in_use(3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) ) THEN621 IF( wrk_in_use(3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) ) THEN 622 622 CALL ctl_stop('dyn:hpg_djc : requested workspace arrays unavailable') ; RETURN 623 END 623 ENDIF 624 624 625 625 IF( kt == nit000 ) THEN … … 819 819 END DO 820 820 ! 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') 823 823 ! 824 824 END SUBROUTINE hpg_djc -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90
r2633 r2636 14 14 USE oce ! ocean dynamics and tracers 15 15 USE dom_oce ! ocean space and time domain 16 USE in_out_manager ! I/O manager17 16 USE trdmod ! ocean dynamics trends 18 17 USE trdmod_oce ! ocean variables trends 18 USE in_out_manager ! I/O manager 19 USE lib_mpp ! MPP library 19 20 USE prtctl ! Print control 20 21 … … 61 62 !!---------------------------------------------------------------------- 62 63 63 IF( wrk_in_use(3,1) ) THEN64 CALL ctl_stop('dyn_key: requested workspace array is unavailable .') ; RETURN64 IF( wrk_in_use(3,1) ) THEN 65 CALL ctl_stop('dyn_key: requested workspace array is unavailable') ; RETURN 65 66 ENDIF 66 67 … … 135 136 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 136 137 ! 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') 138 139 ! 139 140 END SUBROUTINE dyn_keg -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
r2633 r2636 41 41 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 42 42 !! $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 !!---------------------------------------------------------------------- 46 45 CONTAINS 47 46 … … 58 57 !!---------------------------------------------------------------------- 59 58 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 64 62 ! 65 63 IF( l_trddyn ) THEN ! temporary save of ta and sa trends … … 112 110 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 113 111 ! 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.') 117 113 ! 118 114 END SUBROUTINE dyn_ldf -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
r2633 r2636 27 27 PRIVATE 28 28 29 !! * Routine accessibility 30 PUBLIC dyn_ldf_bilap ! called by step.F90 29 PUBLIC dyn_ldf_bilap ! called by step.F90 31 30 32 31 !! * Substitutions … … 75 74 !! mixing trend. 76 75 !!---------------------------------------------------------------------- 77 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released78 USE wrk_nemo, ONLY: zcu => wrk_2d_1, zcv => wrk_2d_2 ! 3D workspace79 USE wrk_nemo, ONLY: zuf => wrk_3d_1, zut => wrk_3d_2 ! 3D workspace80 USE wrk_nemo, ONLY: zlu => wrk_3d_3, zlv => wrk_3d_476 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 81 80 ! 82 81 INTEGER, INTENT(in) :: kt ! ocean time-step index -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90
r2633 r2636 24 24 USE trdmod_oce ! ocean variables trends 25 25 USE ldfslp ! iso-neutral slopes available 26 USE lib_mpp ! MPP library 26 27 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 28 USE prtctl ! Print control … … 41 42 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 42 43 !! $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 !!---------------------------------------------------------------------- 46 46 CONTAINS 47 47 … … 50 50 !! *** ROUTINE dyn_ldf_bilapg_alloc *** 51 51 !!---------------------------------------------------------------------- 52 !53 52 ALLOCATE( zfuw(jpi,jpk) , zfvw (jpi,jpk) , zdiu(jpi,jpk) , zdiv (jpi,jpk) , & 54 53 & zdju(jpi,jpk) , zdj1u(jpi,jpk) , zdjv(jpi,jpk) , zdj1v(jpi,jpk) , STAT=dyn_ldf_bilapg_alloc) 55 54 ! 56 55 IF( dyn_ldf_bilapg_alloc /= 0 ) CALL ctl_warn('dyn_ldf_bilapg_alloc: failed to allocate arrays') 57 !58 56 END FUNCTION dyn_ldf_bilapg_alloc 59 57 … … 96 94 97 95 IF( wrk_in_use(3, 1,2) ) THEN 98 CALL ctl_stop('dyn_ldf_bilapg: requested workspace arrays unavailable .') ; RETURN99 END 96 CALL ctl_stop('dyn_ldf_bilapg: requested workspace arrays unavailable') ; RETURN 97 ENDIF 100 98 101 99 IF( kt == nit000 ) THEN … … 454 452 ! ! =============== 455 453 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') 459 455 ! 460 456 END SUBROUTINE ldfguv -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90
r2633 r2636 27 27 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 28 28 USE in_out_manager ! I/O manager 29 USE lib_mpp ! MPP library 29 30 USE prtctl ! Print control 30 31 … … 53 54 !! *** ROUTINE dyn_ldf_iso_alloc *** 54 55 !!---------------------------------------------------------------------- 55 !56 56 ALLOCATE( zfuw(jpi,jpk) , zdiu(jpi,jpk) , zdju(jpi,jpk) , zdj1u(jpi,jpk) , & 57 57 & zfvw(jpi,jpk) , zdiv(jpi,jpk) , zdjv(jpi,jpk) , zdj1v(jpi,jpk) , STAT=dyn_ldf_iso_alloc) 58 58 ! 59 59 IF( dyn_ldf_iso_alloc /= 0 ) CALL ctl_warn('dyn_ldf_iso_alloc: array allocate failed.') 60 !61 60 END FUNCTION dyn_ldf_iso_alloc 62 61 … … 121 120 122 121 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 .') ; RETURN122 CALL ctl_stop('dyn_ldf_iso: requested workspace arrays unavailable') ; RETURN 124 123 END IF 125 124 … … 429 428 ! ! =============== 430 429 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 ! 435 432 END SUBROUTINE dyn_ldf_iso 436 433 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r2633 r2636 37 37 USE in_out_manager ! I/O manager 38 38 USE lbclnk ! lateral boundary condition (or mpp link) 39 USE lib_mpp ! MPP library 39 40 USE prtctl ! Print control 40 41 #if defined key_agrif … … 110 111 !!---------------------------------------------------------------------- 111 112 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 116 116 117 117 IF( kt == nit000 ) THEN … … 325 325 & tab3d_2=vn, clinfo2=' Vn: ' , mask2=vmask ) 326 326 ! 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.') 330 328 ! 331 329 END SUBROUTINE dyn_nxt -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r2633 r2636 14 14 USE oce ! ocean dynamics and tracers variables 15 15 USE dom_oce ! ocean space and time domain variables 16 USE phycst ! physical constants 16 17 USE obc_oce ! ocean open boundary conditions 17 18 USE sbc_oce ! surface boundary condition: ocean … … 26 27 USE prtctl ! Print control (prt_ctl routine) 27 28 USE in_out_manager ! I/O manager 28 USE phycst ! physical constants29 USE lib_mpp ! MPP library 29 30 30 31 IMPLICIT NONE … … 42 43 !! NEMO/OPA 3.2 , LODYC-IPSL (2009) 43 44 !! $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 !!---------------------------------------------------------------------- 47 47 CONTAINS 48 48 … … 83 83 !!---------------------------------------------------------------------- 84 84 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 89 88 90 89 !!gm NOTA BENE : the dynspg_exp and dynspg_ts should be modified so that … … 154 153 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 155 154 ! 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') 159 156 ! 160 157 END SUBROUTINE dyn_spg … … 181 178 182 179 ! ! 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') 184 181 185 182 ! ! Control of surface pressure gradient scheme options -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r2633 r2636 132 132 !!---------------------------------------------------------------------- 133 133 134 IF( wrk_in_use(2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,&135 136 CALL ctl_stop( 'dyn_spg_ts: requested workspace arrays unavailable .' ) ; RETURN134 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 137 137 END IF 138 138 … … 569 569 ! 570 570 ! 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))THEN571 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) ) & 573 573 CALL ctl_stop('dyn_spg_ts: failed to release workspace arrays.') 574 END IF575 574 ! 576 575 END SUBROUTINE dyn_spg_ts -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r2633 r2636 33 33 USE prtctl ! Print control 34 34 USE in_out_manager ! I/O manager 35 USE lib_mpp 35 36 36 37 IMPLICIT NONE … … 218 219 !!---------------------------------------------------------------------- 219 220 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 224 224 225 225 IF( kt == nit000 ) THEN … … 286 286 END DO ! End of slab 287 287 ! ! =============== 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.') 291 289 ! 292 290 END SUBROUTINE vor_ene … … 335 333 !!---------------------------------------------------------------------- 336 334 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 341 338 342 339 IF( kt == nit000 ) THEN … … 410 407 END DO ! End of slab 411 408 ! ! =============== 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') 415 410 ! 416 411 END SUBROUTINE vor_mix … … 456 451 !!---------------------------------------------------------------------- 457 452 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 461 455 END IF 462 456 … … 532 526 END DO ! End of slab 533 527 ! ! =============== 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') 537 529 ! 538 530 END SUBROUTINE vor_ens … … 580 572 !!---------------------------------------------------------------------- 581 573 582 IF( wrk_in_use(2, 1,2,3,4,5,6,7) .OR. wrk_in_use(3, 1) ) THEN574 IF( wrk_in_use(2, 1,2,3,4,5,6,7) .OR. wrk_in_use(3, 1) ) THEN 583 575 CALL ctl_stop('dyn:vor_een : requested workspace arrays unavailable.') ; RETURN 584 END 576 ENDIF 585 577 586 578 IF( kt == nit000 ) THEN -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90
r2633 r2636 20 20 USE trdmod ! ocean dynamics trends 21 21 USE in_out_manager ! I/O manager 22 USE lib_mpp ! MPP library 22 23 USE prtctl ! Print control 23 24 … … 66 67 !!---------------------------------------------------------------------- 67 68 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 72 72 END IF 73 73 … … 126 126 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 127 127 ! 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 ! 133 131 END SUBROUTINE dyn_zad 134 132 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90
r2633 r2636 23 23 USE trdmod_oce ! ocean variables trends 24 24 USE in_out_manager ! I/O manager 25 USE lib_mpp ! MPP library 25 26 USE prtctl ! Print control 26 27 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90
r2633 r2636 19 19 USE zdf_oce ! ocean vertical physics 20 20 USE sbc_oce ! surface boundary condition: ocean 21 USE lib_mpp ! MPP library 21 22 USE in_out_manager ! I/O manager 23 USE lib_mpp ! MPP library 22 24 23 25 IMPLICIT NONE … … 63 65 !!---------------------------------------------------------------------- 64 66 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 69 70 70 71 IF( kt == nit000 .AND. lwp ) THEN … … 119 120 END DO ! End of time splitting 120 121 ! 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') 124 123 ! 125 124 END SUBROUTINE dyn_zdf_exp -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r2633 r2636 20 20 USE phycst ! physical constants 21 21 USE in_out_manager ! I/O manager 22 USE lib_mpp ! MPP library 22 23 23 24 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
r2633 r2636 25 25 USE phycst 26 26 USE lbclnk ! ocean lateral boundary condition (or mpp link) 27 USE lib_mpp ! MPP library 27 28 USE obc_par ! open boundary cond. parameter 28 29 USE obc_oce … … 86 87 !!---------------------------------------------------------------------- 87 88 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 92 92 93 93 IF( kt == nit000 ) THEN … … 244 244 IF(ln_ctl) CALL prt_ctl( tab2d_1=ssha, clinfo1=' ssha - : ', mask1=tmask, ovlap=1 ) 245 245 ! 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') 249 247 ! 250 248 END SUBROUTINE ssh_wzv -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/in_out_manager.F90
r2625 r2636 13 13 14 14 !!---------------------------------------------------------------------- 15 !! ctl_stop : update momentum and tracer Kz from a tke scheme16 !! ctl_warn : initialization, namelist read, and parameters control17 !! getunit : give the index of an unused logical unit18 !!----------------------------------------------------------------------19 15 USE par_oce ! ocean parameter 20 16 USE lib_print ! formated print library 21 17 USE nc4interface ! NetCDF4 interface 22 USE lib_mpp ! MPP library23 18 24 19 IMPLICIT NONE … … 135 130 !! $Id$ 136 131 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 137 !!----------------------------------------------------------------------138 CONTAINS139 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 and146 !! increment the error number (nstop) by one.147 !!----------------------------------------------------------------------148 CHARACTER(len=*), INTENT(in), OPTIONAL :: cd_stop, cd1, cd2, cd3, cd4, cd5149 CHARACTER(len=*), INTENT(in), OPTIONAL :: cd6, cd7, cd8, cd9, cd10150 !!----------------------------------------------------------------------151 !152 nstop = nstop + 1153 IF(lwp) THEN154 WRITE(numout,cform_err)155 IF( PRESENT(cd1 ) ) WRITE(numout,*) cd1156 IF( PRESENT(cd2 ) ) WRITE(numout,*) cd2157 IF( PRESENT(cd3 ) ) WRITE(numout,*) cd3158 IF( PRESENT(cd4 ) ) WRITE(numout,*) cd4159 IF( PRESENT(cd5 ) ) WRITE(numout,*) cd5160 IF( PRESENT(cd6 ) ) WRITE(numout,*) cd6161 IF( PRESENT(cd7 ) ) WRITE(numout,*) cd7162 IF( PRESENT(cd8 ) ) WRITE(numout,*) cd8163 IF( PRESENT(cd9 ) ) WRITE(numout,*) cd9164 IF( PRESENT(cd10) ) WRITE(numout,*) cd10165 ENDIF166 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) ) THEN172 IF( cd_stop == 'STOP' ) THEN173 WRITE(numout,*)174 WRITE(numout,*) 'huge E-R-R-O-R : immediate stop'175 CALL mppstop()176 ENDIF177 ENDIF178 !179 END SUBROUTINE ctl_stop180 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 and188 !! increment the warning number (nwarn) by one.189 !!----------------------------------------------------------------------190 CHARACTER(len=*), INTENT(in), OPTIONAL :: cd1, cd2, cd3, cd4, cd5191 CHARACTER(len=*), INTENT(in), OPTIONAL :: cd6, cd7, cd8, cd9, cd10192 !!----------------------------------------------------------------------193 !194 nwarn = nwarn + 1195 IF(lwp) THEN196 WRITE(numout,cform_war)197 IF( PRESENT(cd1 ) ) WRITE(numout,*) cd1198 IF( PRESENT(cd2 ) ) WRITE(numout,*) cd2199 IF( PRESENT(cd3 ) ) WRITE(numout,*) cd3200 IF( PRESENT(cd4 ) ) WRITE(numout,*) cd4201 IF( PRESENT(cd5 ) ) WRITE(numout,*) cd5202 IF( PRESENT(cd6 ) ) WRITE(numout,*) cd6203 IF( PRESENT(cd7 ) ) WRITE(numout,*) cd7204 IF( PRESENT(cd8 ) ) WRITE(numout,*) cd8205 IF( PRESENT(cd9 ) ) WRITE(numout,*) cd9206 IF( PRESENT(cd10) ) WRITE(numout,*) cd10207 ENDIF208 CALL FLUSH(numout)209 !210 END SUBROUTINE ctl_warn211 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 open220 !!----------------------------------------------------------------------221 INTEGER , INTENT( out) :: knum ! logical unit to open222 CHARACTER(len=*) , INTENT(in ) :: cdfile ! file name to open223 CHARACTER(len=*) , INTENT(in ) :: cdstat ! disposition specifier224 CHARACTER(len=*) , INTENT(in ) :: cdform ! formatting specifier225 CHARACTER(len=*) , INTENT(in ) :: cdacce ! access specifier226 INTEGER , INTENT(in ) :: klengh ! record length227 INTEGER , INTENT(in ) :: kout ! number of logical units for write228 LOGICAL , INTENT(in ) :: ldwp ! boolean term for print229 INTEGER, OPTIONAL, INTENT(in ) :: karea ! proc number230 !!231 CHARACTER(len=80) :: clfile232 INTEGER :: iost233 !!----------------------------------------------------------------------234 235 ! adapt filename236 ! ----------------237 clfile = TRIM(cdfile)238 IF( PRESENT( karea ) ) THEN239 IF( karea > 1 ) WRITE(clfile, "(a,'_',i4.4)") TRIM(clfile), karea-1240 ENDIF241 #if defined key_agrif242 IF( .NOT. Agrif_Root() ) clfile = TRIM(Agrif_CFixed())//'_'//TRIM(clfile)243 knum=Agrif_Get_Unit()244 #else245 knum=getunit()246 #endif247 248 iost=0249 IF( cdacce(1:6) == 'DIRECT' ) THEN250 OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat, RECL=klengh, ERR=100, IOSTAT=iost )251 ELSE252 OPEN( UNIT=knum, FILE=clfile, FORM=cdform, ACCESS=cdacce, STATUS=cdstat , ERR=100, IOSTAT=iost )253 ENDIF254 IF( iost == 0 ) THEN255 IF(ldwp) THEN256 WRITE(kout,*) ' file : ', clfile,' open ok'257 WRITE(kout,*) ' unit = ', knum258 WRITE(kout,*) ' status = ', cdstat259 WRITE(kout,*) ' form = ', cdform260 WRITE(kout,*) ' access = ', cdacce261 WRITE(kout,*)262 ENDIF263 ENDIF264 100 CONTINUE265 IF( iost /= 0 ) THEN266 IF(ldwp) THEN267 WRITE(kout,*)268 WRITE(kout,*) ' ===>>>> : bad opening file: ', clfile269 WRITE(kout,*) ' ======= === '270 WRITE(kout,*) ' unit = ', knum271 WRITE(kout,*) ' status = ', cdstat272 WRITE(kout,*) ' form = ', cdform273 WRITE(kout,*) ' access = ', cdacce274 WRITE(kout,*) ' iostat = ', iost275 WRITE(kout,*) ' we stop. verify the file '276 WRITE(kout,*)277 ENDIF278 STOP 'ctl_opn bad opening'279 ENDIF280 281 END SUBROUTINE ctl_opn282 283 284 FUNCTION getunit()285 !!----------------------------------------------------------------------286 !! *** FUNCTION getunit ***287 !!288 !! ** Purpose : return the index of an unused logical unit289 !!----------------------------------------------------------------------290 INTEGER :: getunit291 LOGICAL :: llopn292 !!----------------------------------------------------------------------293 !294 getunit = 15 ! choose a unit that is big enough then it is not already used in NEMO295 llopn = .TRUE.296 DO WHILE( (getunit < 998) .AND. llopn )297 getunit = getunit + 1298 INQUIRE( unit = getunit, opened = llopn )299 END DO300 IF( (getunit == 999) .AND. llopn ) THEN301 CALL ctl_stop( 'getunit: All logical units until 999 are used...' )302 getunit = -1303 ENDIF304 !305 END FUNCTION getunit306 307 132 !!===================================================================== 308 133 END MODULE in_out_manager -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r2590 r2636 18 18 !! iom_rstput : write a field in a restart file (interfaced to several routines) 19 19 !!-------------------------------------------------------------------- 20 USE in_out_manager ! I/O manager21 20 USE dom_oce ! ocean space and time domain 22 21 USE lbclnk ! lateal boundary condition / mpp exchanges … … 25 24 USE iom_nf90 ! NetCDF format with native NetCDF library 26 25 USE iom_rstdimg ! restarts access direct format "dimg" style... 27 26 USE in_out_manager ! I/O manager 27 USE lib_mpp ! MPP library 28 28 #if defined key_iomput 29 29 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 18 18 !! iom_rstput : write a field in a restart file (interfaced to several routines) 19 19 !!-------------------------------------------------------------------- 20 USE in_out_manager ! I/O manager21 20 USE dom_oce ! ocean space and time domain 22 21 USE iom_def ! iom variables definitions 23 22 USE ioipsl ! IOIPSL library 23 USE in_out_manager ! I/O manager 24 USE lib_mpp ! MPP library 24 25 25 26 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/iom_nf90.F90
r2528 r2636 18 18 !! iom_rstput : write a field in a restart file (interfaced to several routines) 19 19 !!-------------------------------------------------------------------- 20 USE in_out_manager ! I/O manager21 20 USE dom_oce ! ocean space and time domain 22 21 USE lbclnk ! lateal boundary condition / mpp exchanges 23 22 USE iom_def ! iom variables definitions 24 23 USE netcdf ! NetCDF library 24 USE in_out_manager ! I/O manager 25 USE lib_mpp ! MPP library 25 26 26 27 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/IOM/iom_rstdimg.F90
r2590 r2636 16 16 !!-------------------------------------------------------------------- 17 17 USE in_out_manager ! I/O manager 18 USE lib_mpp ! MPP library 18 19 USE dom_oce ! ocean space and time domain 19 20 USE lbclnk ! lateal boundary condition / mpp exchanges … … 82 83 llclobber = ldwrt .AND. ln_clobber 83 84 ! get a free unit 84 idrst = get unit() ! get a free logical unit for the restart file85 idrst = get_unit() ! get a free logical unit for the restart file 85 86 !!$#if defined key_agrif 86 87 !!$ idrst = Agrif_Get_Unit() -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LBC/cla.F90
r2442 r2636 31 31 USE lib_mpp ! distributed memory computing library 32 32 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 33 USE lib_mpp ! MPP library 33 34 34 35 IMPLICIT NONE … … 723 724 !! Default key Dummy module 724 725 !!---------------------------------------------------------------------- 725 USE in_out_manager ! I/O manager726 USE lib_mpp, ONLY: ctl_stop 726 727 CONTAINS 727 728 SUBROUTINE cla_init -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LBC/lbcnfd.F90
r2442 r2636 12 12 !! lbc_nfd_2d : lateral boundary condition: North fold treatment for a 2D arrays (lbc_nfd) 13 13 !!---------------------------------------------------------------------- 14 USE oce ! ocean dynamics and tracers15 14 USE dom_oce ! ocean space and time domain 16 15 USE in_out_manager ! I/O manager -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90
r2633 r2636 18 18 !! 3.2 ! 2009 (R. Benshila) SHMEM suppression, north fold in lbc_nfd 19 19 !! 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 20 28 !!---------------------------------------------------------------------- 21 29 #if defined key_mpp_mpi … … 44 52 !! mpp_lbc_north_e : variant of mpp_lbc_north for extra outer halo 45 53 !!---------------------------------------------------------------------- 46 !! History : OPA ! 1994 (M. Guyon, J. Escobar, M. Imbard) Original code47 !! ! 1997 (A.M. Treguier) SHMEM additions48 !! ! 1998 (M. Imbard, J. Escobar, L. Colombet ) SHMEM and MPI49 !! NEMO 1.0 ! 2003 (J.-M. Molines, G. Madec) F90, free form50 !! ! 2004 (R. Bourdalle Badie) isend option in mpi51 !! ! 2005 (G. Madec, S. Masson) npolj=5,6 F-point & ice cases52 !! ! 2005 (R. Redler) Replacement of MPI_COMM_WORLD except for MPI_Abort53 !! ! 2009 (R. Benshila) SHMEM suppression, north fold in lbc_nfd54 !!----------------------------------------------------------------------55 54 USE dom_oce ! ocean space and time domain 56 55 USE lbcnfd ! north fold treatment 56 USE in_out_manager ! I/O manager 57 57 58 58 IMPLICIT NONE 59 59 PRIVATE 60 60 61 PUBLIC ctl_stop, ctl_warn, get_unit, ctl_opn 61 62 PUBLIC mynode, mppstop, mppsync, mpp_comm_free 62 63 PUBLIC mpp_ini_north, mpp_lbc_north, mpp_lbc_north_e … … 116 117 # endif 117 118 118 CHARACTER(lc) :: cform_err = "(/,' ===>>> : E R R O R', /,' ===========',/)" !:119 CHARACTER(lc) :: cform_war = "(/,' ===>>> : W A R N I N G', /,' ===============',/)" !:120 121 119 ! variables used in case of sea-ice 122 120 INTEGER, PUBLIC :: ncomm_ice !: communicator made by the processors with sea-ice … … 2468 2466 !! Default case: Dummy module share memory computing 2469 2467 !!---------------------------------------------------------------------- 2468 USE in_out_manager 2470 2469 2471 2470 INTERFACE mpp_sum … … 2488 2487 END INTERFACE 2489 2488 2490 2491 2489 LOGICAL, PUBLIC, PARAMETER :: lk_mpp = .FALSE. !: mpp flag 2492 2490 INTEGER :: ncomm_ice 2493 2491 !!---------------------------------------------------------------------- 2494 2492 CONTAINS 2495 2493 … … 2666 2664 END SUBROUTINE mpp_comm_free 2667 2665 #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 2792 100 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 2668 2834 !!---------------------------------------------------------------------- 2669 2835 END MODULE lib_mpp -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/LDF/ldfdyn_oce.F90
r2618 r2636 8 8 USE par_oce ! ocean parameters 9 9 USE in_out_manager ! I/O manager 10 USE lib_mpp ! MPP library 10 11 11 12 IMPLICIT NONE … … 45 46 !! *** FUNCTION ldfdyn_oce_alloc *** 46 47 !!---------------------------------------------------------------------- 48 ldfdyn_oce_alloc = 0 47 49 #if defined key_dynldf_c3d 48 50 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 8 8 USE par_oce ! ocean parameters 9 9 USE in_out_manager ! I/O manager 10 USE lib_mpp ! MPP library 10 11 11 12 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/albedo.F90
r2633 r2636 18 18 USE phycst ! physical constants 19 19 USE in_out_manager ! I/O manager 20 USE lib_mpp ! MPP library 20 21 21 22 IMPLICIT NONE … … 64 65 !! References : Shine and Hendersson-Sellers 1985, JGR, 90(D1), 2243-2250. 65 66 !!---------------------------------------------------------------------- 66 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, llwrk_in_use, llwrk_not_released67 USE wrk_nemo, ONLY: wrk_3d_6, wrk_3d_7 ! 3D workspace67 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 68 69 !! 69 70 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 20 20 !! cpl_prism_init : initialization of coupled mode communication 21 21 !! cpl_prism_define : definition of grid and fields 22 !! cpl_prism_snd : snd out fields in coupled mode23 !! cpl_prism_rcv : receive fields in coupled mode24 !! cpl_prism_update_time 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 25 25 !! cpl_prism_finalize : finalize the coupled mode communication 26 26 !!---------------------------------------------------------------------- 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 33 34 34 35 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r2633 r2636 15 15 USE oce ! ocean dynamics and tracers 16 16 USE dom_oce ! ocean space and time domain 17 USE ioipsl, ONLY : ymds2ju, ju2ymds ! for calendar18 17 USE phycst ! ??? 19 18 USE in_out_manager ! I/O manager 20 19 USE iom ! I/O manager library 21 20 USE geo2ocean ! for vector rotation on to model grid 21 USE lib_mpp ! MPP library 22 USE ioipsl, ONLY : ymds2ju, ju2ymds ! for calendar 22 23 23 24 IMPLICIT NONE … … 391 392 CALL fld_clopn( sdjf, iyear, imonth, iday ) 392 393 ENDIF 393 394 ! 394 395 END SUBROUTINE fld_init 395 396 … … 804 805 !! file, restructuring as required 805 806 !!---------------------------------------------------------------------- 806 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released807 USE wrk_nemo, ONLY: data_tmp => wrk_2d_1808 USE wrk_nemo, ONLY: data_src => iwrk_2d_1807 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 809 810 !! 810 811 TYPE( FLD ), INTENT(in) :: sd ! field with name of weights file … … 822 823 IF( wrk_in_use(2, 1) .OR. iwrk_in_use(2,1) ) THEN 823 824 CALL ctl_stop('fld_weights: requested workspace arrays are unavailable.') ; RETURN 824 END 825 ENDIF 825 826 ! 826 827 IF( nxt_wgt > tot_wgts ) THEN … … 934 935 ENDIF 935 936 936 IF( wrk_not_released(2, 1) .OR. &937 IF( wrk_not_released(2, 1) .OR. & 937 938 iwrk_not_released(2, 1) ) CALL ctl_stop('fld_weights: failed to release workspace arrays') 938 939 ! -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/geo2ocean.F90
r2631 r2636 46 46 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 47 47 !! $Id$ 48 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)48 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 49 49 !!---------------------------------------------------------------------- 50 51 50 CONTAINS 52 51 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r2620 r2636 20 20 USE lib_fortran ! distribued memory computing library 21 21 USE iom ! IOM library 22 USE lib_mpp ! MPP library 22 23 USE restart ! ocean restart 23 24 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_clio.F90
r2633 r2636 232 232 !!--------------------------------------------------------------------- 233 233 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 238 237 239 238 zpatm = 101000. ! atmospheric pressure (assumed constant here) … … 386 385 ENDIF 387 386 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 ! 392 389 END SUBROUTINE blk_oce_clio 393 390 … … 420 417 !! 421 418 !!---------------------------------------------------------------------- 422 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released423 USE wrk_nemo, ONLY: ztatm=> wrk_2d_1 ! Tair in Kelvin424 USE wrk_nemo, ONLY: zqatm=> wrk_2d_2 ! specific humidity425 USE wrk_nemo, ONLY: zevsqr => wrk_2d_3 ! vapour pressure square-root426 USE wrk_nemo, ONLY: zrhoa=> wrk_2d_4 ! air density427 USE wrk_nemo, ONLY: wrk_3d_1, wrk_3d_2419 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 428 425 !! 429 426 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pst ! ice surface temperature [Kelvin] … … 457 454 !!--------------------------------------------------------------------- 458 455 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 462 458 ELSE IF(pdim > jpk)THEN 463 459 CALL ctl_stop('blk_ice_clio: too many ice levels to use wrk_nemo 3D workspaces.') … … 637 633 ENDIF 638 634 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) ) & 640 637 CALL ctl_stop('blk_ice_clio: failed to release workspace arrays.') 641 END IF 642 638 ! 643 639 END SUBROUTINE blk_ice_clio 644 640 … … 654 650 !! - also initialise sbudyko and stauc once for all 655 651 !!---------------------------------------------------------------------- 656 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released657 USE wrk_nemo, ONLY: zev => wrk_2d_1 ! vapour pressure658 USE wrk_nemo, ONLY: zdlha => wrk_2d_2, zlsrise => wrk_2d_3, zlsset => wrk_2d_4659 USE wrk_nemo, ONLY: zps => wrk_2d_5, zpc => wrk_2d_6 ! sine (cosine) of latitude per sine (cosine)of solar declination652 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 660 656 !! 661 657 REAL(wp), INTENT( out), DIMENSION(jpi,jpj) :: pqsr_oce ! shortwave radiation over the ocean … … 679 675 !!--------------------------------------------------------------------- 680 676 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 684 679 END IF 685 680 … … 796 791 END DO 797 792 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 ! 802 795 END SUBROUTINE blk_clio_qsr_oce 803 796 … … 813 806 !! - also initialise sbudyko and stauc once for all 814 807 !!---------------------------------------------------------------------- 815 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released816 USE wrk_nemo, ONLY: zev => wrk_2d_1! vapour pressure817 USE wrk_nemo, ONLY: zdlha => wrk_2d_2! 2D workspace818 USE wrk_nemo, ONLY: zlsrise => wrk_2d_3 ! 2D workspace819 USE wrk_nemo, ONLY: zlsset => wrk_2d_4! 2D workspace820 USE wrk_nemo, ONLY: zps => wrk_2d_5, zpc => wrk_2d_6 ! sine (cosine) of latitude per sine (cosine)of solar declination808 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 821 814 !! 822 815 REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pa_ice_cs ! albedo of ice under clear sky … … 839 832 !!--------------------------------------------------------------------- 840 833 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 845 837 846 838 ijpl = SIZE(pqsr_ice, 3 ) ! number of ice categories … … 945 937 END DO 946 938 ! 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') 950 940 ! 951 941 END SUBROUTINE blk_clio_qsr_ice -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r2633 r2636 11 11 !! - Implement reading of 6-hourly fields 12 12 !! 3.0 ! 2006-06 (G. Madec) sbc rewritting 13 !! - ! 2006-12 (L. Brodeau) Original code for TURB_CORE_2Z 13 14 !! 3.2 ! 2009-04 (B. Lemaire) Introduce iom_put 14 15 !! 3.3 ! 2010-10 (S. Masson) add diurnal cycle … … 208 209 !! ** Nota : sf has to be a dummy argument for AGRIF on NEC 209 210 !!--------------------------------------------------------------------- 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 230 230 !!--------------------------------------------------------------------- 231 231 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 236 235 ! 237 236 ! local scalars ( place there for vector optimisation purposes) … … 383 382 ENDIF 384 383 ! 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') 388 386 ! 389 387 END SUBROUTINE blk_oce_core … … 407 405 !! caution : the net upward water flux has with mm/day unit 408 406 !!--------------------------------------------------------------------- 409 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released410 USE wrk_nemo, ONLY: z_wnds_t => wrk_2d_1 ! wind speed ( = | U10m - U_ice | ) at T-point411 USE wrk_nemo, ONLY: wrk_3d_4, wrk_3d_5, wrk_3d_6, wrk_3d_7412 !! 413 REAL(wp), DIMENSION(:,:,:) 414 REAL(wp), DIMENSION(:,:) 415 REAL(wp), DIMENSION(:,:) 416 REAL(wp), DIMENSION(:,:,:) 417 REAL(wp), DIMENSION(:,:) 418 REAL(wp), DIMENSION(:,:) 419 REAL(wp), DIMENSION(:,:,:) 420 REAL(wp), DIMENSION(:,:,:) 421 REAL(wp), DIMENSION(:,:,:) 422 REAL(wp), DIMENSION(:,:,:) 423 REAL(wp), DIMENSION(:,:,:) 424 REAL(wp), DIMENSION(:,:) 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) 429 INTEGER 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 430 428 !! 431 429 INTEGER :: ji, jj, jl ! dummy loop indices … … 447 445 448 446 ! 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 453 450 CALL ctl_stop('blk_ice_core: no. of ice categories > jpk so wrk_nemo 3D workspaces cannot be used.') 454 451 RETURN … … 608 605 ENDIF 609 606 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 ! 614 610 END SUBROUTINE blk_ice_core 615 611 616 612 617 613 SUBROUTINE TURB_CORE_1Z(zu, sst, T_a, q_sat, q_a, & 618 & dU , Cd, Ch, Ce )614 & dU , Cd , Ch , Ce ) 619 615 !!---------------------------------------------------------------------- 620 616 !! *** ROUTINE turb_core *** … … 629 625 !! are provided at the same height 'zzu'! 630 626 !! 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 : ??? 636 628 !!---------------------------------------------------------------------- 637 629 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released … … 651 643 USE wrk_nemo, ONLY: zeta => wrk_2d_27 ! stability parameter at height zu 652 644 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_32645 USE wrk_nemo, ONLY: xlogt => wrk_2d_29, xct => wrk_2d_30, & 646 zpsi_h => wrk_2d_31, zpsi_m => wrk_2d_32 655 647 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) 668 658 !! 669 659 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 675 663 !!---------------------------------------------------------------------- 676 664 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 685 671 686 672 !! * Start … … 743 729 END DO 744 730 !! 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 ! 753 737 END SUBROUTINE TURB_CORE_1Z 754 738 … … 767 751 !! whereas wind (dU) is at 10m. 768 752 !! 769 !! References : 770 !! Large & Yeager, 2004 : ??? 771 !! History : 772 !! 9.0 ! 06-12 (L. Brodeau) Original code for 2Z 753 !! References : Large & Yeager, 2004 : ??? 773 754 !!---------------------------------------------------------------------- 774 755 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released … … 899 880 CALL ctl_stop('TURB_CORE_2Z: requested workspace arrays unavailable.') 900 881 END IF 901 882 ! 902 883 END SUBROUTINE TURB_CORE_2Z 903 884 … … 926 907 & + (1. - stabit)*(2*log((1. + X)/2) + log((1. + X2)/2) - 2*atan(X) + pi/2) ! Unstable 927 908 928 IF( wrk_not_released(2, 33,34,35))THEN909 IF( wrk_not_released(2, 33,34,35) ) THEN 929 910 CALL ctl_stop('psi_m: failed to release workspace arrays.') 930 911 RETURN … … 946 927 !------------------------------------------------------------------------------- 947 928 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 952 932 953 933 X2 = sqrt(abs(1. - 16.*zta)) ; X2 = max(X2 , 1.) ; X = sqrt(X2) … … 956 936 & + (1. - stabit)*(2.*log( (1. + X2)/2. )) ! Unstable 957 937 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 ! 963 940 END FUNCTION psi_h 964 941 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r2633 r2636 223 223 !!--------------------------------------------------------------------- 224 224 225 IF(wrk_in_use(2, 1,2) ) THEN226 CALL ctl_stop('sbc_cpl_init: requested workspace arrays unavailable .') ; RETURN227 END 225 IF(wrk_in_use(2, 1,2) ) THEN 226 CALL ctl_stop('sbc_cpl_init: requested workspace arrays unavailable') ; RETURN 227 ENDIF 228 228 229 229 ! ================================ ! … … 563 563 & CALL ctl_stop( 'sbc_cpl_init: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' ) 564 564 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 ! 569 567 END SUBROUTINE sbc_cpl_init 570 568 … … 629 627 !!---------------------------------------------------------------------- 630 628 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 635 632 636 633 IF( kt == nit000 ) CALL sbc_cpl_init( k_ice ) ! initialisation … … 820 817 ENDIF 821 818 ! 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') 825 820 ! 826 821 END SUBROUTINE sbc_cpl_rcv … … 870 865 !!---------------------------------------------------------------------- 871 866 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 876 870 877 871 IF( srcv(jpr_itx1)%laction ) THEN ; itx = jpr_itx1 … … 1041 1035 ENDIF 1042 1036 ! 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') 1046 1038 ! 1047 1039 END SUBROUTINE sbc_cpl_ice_tau … … 1118 1110 !!---------------------------------------------------------------------- 1119 1111 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 1124 1115 1125 1116 zicefr(:,:,1) = 1.- p_frld(:,:,1) … … 1240 1231 END SELECT 1241 1232 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 ! 1246 1236 END SUBROUTINE sbc_cpl_ice_flx 1247 1237 … … 1268 1258 !!---------------------------------------------------------------------- 1269 1259 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 1274 1263 1275 1264 isec = ( kt - nit000 ) * NINT(rdttra(1)) ! date of exchanges … … 1444 1433 ! 1445 1434 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 ! 1452 1438 END SUBROUTINE sbc_cpl_snd 1453 1439 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcdcy.F90
r2625 r2636 10 10 11 11 !!---------------------------------------------------------------------- 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 14 13 !!---------------------------------------------------------------------- 15 14 USE oce ! ocean dynamics and tracers … … 33 32 !! NEMO/OPA 3.3 , NEMO-consortium (2010) 34 33 !! $Id$ 35 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)34 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 36 35 !!---------------------------------------------------------------------- 37 36 CONTAINS … … 41 40 !! *** FUNCTION sbc_dcy_alloc *** 42 41 !!---------------------------------------------------------------------- 43 !44 42 ALLOCATE( raa (jpi,jpj) , rbb (jpi,jpj) , rcc (jpi,jpj) , rab (jpi,jpj) , & 45 43 & rtmd(jpi,jpj) , rdawn(jpi,jpj) , rdusk(jpi,jpj) , rscal(jpi,jpj) , STAT=sbc_dcy_alloc ) … … 47 45 IF( lk_mpp ) CALL mpp_sum ( sbc_dcy_alloc ) 48 46 IF( sbc_dcy_alloc /= 0 ) CALL ctl_warn('sbc_dcy_alloc: failed to allocate arrays') 49 !50 47 END FUNCTION sbc_dcy_alloc 51 48 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90
r2620 r2636 19 19 USE iom ! I/O manager library 20 20 USE in_out_manager ! I/O manager 21 USE lib_mpp ! MPP library 21 22 22 23 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90
r2633 r2636 22 22 USE oce ! ocean dynamics and tracers 23 23 USE dom_oce ! ocean space and time domain 24 USE lib_mpp ! MPP library25 24 USE par_ice ! sea-ice parameters 26 25 USE ice ! LIM-3: ice variables … … 50 49 USE c1d ! 1D vertical configuration 51 50 USE lbclnk ! lateral boundary condition - MPP link 51 USE lib_mpp ! MPP library 52 52 USE iom ! I/O manager library 53 53 USE in_out_manager ! I/O manager … … 101 101 102 102 IF( wrk_in_use(3, 1,2) ) THEN 103 CALL ctl_stop( 'sbc_ice_lim: requested workspace arrays are unavailable .' ) ; RETURN103 CALL ctl_stop( 'sbc_ice_lim: requested workspace arrays are unavailable' ) ; RETURN 104 104 ENDIF 105 105 … … 252 252 !!gm remark, the ocean-ice stress is not saved in ice diag call above ..... find a solution!!! 253 253 ! 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' ) 255 255 ! 256 256 END SUBROUTINE sbc_ice_lim -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r2633 r2636 96 96 !!---------------------------------------------------------------------- 97 97 98 IF( wrk_in_use(3, 1,2,3) ) THEN98 IF( wrk_in_use(3, 1,2,3) ) THEN 99 99 CALL ctl_stop('sbc_ice_lim_2: requested workspace arrays are unavailable.') ; RETURN 100 END 100 ENDIF 101 101 ! Use pointers to access only sub-arrays of workspaces 102 102 zalb_ice_os => wrk_3d_1(:,:,1:1) … … 228 228 IF( ln_limdyn ) CALL lim_sbc_tau_2( kt, ub(:,:,1), vb(:,:,1) ) ! using before instantaneous surf. currents 229 229 ! 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') 231 231 ! 232 232 END SUBROUTINE sbc_ice_lim_2 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r2620 r2636 38 38 USE sbcfwb ! surface boundary condition: freshwater budget 39 39 USE closea ! closed sea 40 USE bdy_par ! unstructured open boundary data variables41 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) 42 42 43 43 USE prtctl ! Print control (prt_ctl routine) … … 45 45 USE iom ! IOM library 46 46 USE in_out_manager ! I/O manager 47 USE lib_mpp ! MPP library 47 48 48 49 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r2620 r2636 19 19 USE phycst ! physical constants 20 20 USE sbc_oce ! surface boundary condition variables 21 USE closea ! closed seas 21 22 USE fldread ! read input field at current time step 23 USE restart ! restart 22 24 USE in_out_manager ! I/O manager 23 25 USE iom ! I/O module 24 USE restart ! restart 25 USE closea ! closed seas 26 USE lib_mpp ! MPP library 26 27 27 28 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SOL/solpcg.F90
r2633 r2636 26 26 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 27 27 !! $Id$ 28 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)28 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 29 29 !!---------------------------------------------------------------------- 30 30 CONTAINS … … 83 83 !! ! 08-01 (R. Benshila) mpp optimization 84 84 !!---------------------------------------------------------------------- 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 96 95 !!---------------------------------------------------------------------- 97 96 98 97 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 102 100 103 101 ! Initialization of the algorithm with standard PCG 104 102 ! ------------------------------------------------- 105 zgcr = 0. e0106 gcr = 0. e0103 zgcr = 0._wp 104 gcr = 0._wp 107 105 108 106 CALL lbc_lnk( gcx, c_solver_pt, 1. ) ! lateral boundary condition … … 207 205 END DO ! End Loop 208 206 ! !================ 209 210 207 999 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 218 210 ! 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') 222 212 ! 223 213 END SUBROUTINE sol_pcg -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SOL/solsor.F90
r2633 r2636 32 32 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 33 33 !! $Id$ 34 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)34 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 35 35 !!---------------------------------------------------------------------- 36 37 36 CONTAINS 38 37 … … 58 57 !! Beare and Stevens 1997 Ann. Geophysicae 15, 1369-1377 59 58 !!---------------------------------------------------------------------- 60 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released61 USE wrk_nemo, ONLY: ztab => wrk_2d_159 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 60 USE wrk_nemo, ONLY: ztab => wrk_2d_1 ! 2D workspace 62 61 !! 63 62 INTEGER, INTENT(inout) :: kindic ! solver indicator, < 0 if the convergence is not reached: 64 63 ! ! the model is stopped in step (set to zero before the call of solsor) 65 64 !! 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 70 68 !!---------------------------------------------------------------------- 71 69 72 70 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 76 73 77 74 ijmppeven = MOD( nimpp+njmpp+jpr2di+jpr2dj , 2 ) … … 171 168 CALL lbc_lnk_e( gcx, c_solver_pt, 1. ) ! boundary conditions 172 169 ! 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') 176 171 ! 177 172 END SUBROUTINE sol_sor -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/SOL/solver.F90
r2622 r2636 26 26 USE in_out_manager ! I/O manager 27 27 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 28 USE lib_mpp 28 USE lib_mpp ! MPP library 29 29 30 30 IMPLICIT NONE … … 35 35 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 36 36 !!---------------------------------------------------------------------- 37 38 37 CONTAINS 39 38 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90
r2633 r2636 33 33 USE dom_oce ! ocean space and time domain 34 34 USE phycst ! physical constants 35 USE zdfddm ! vertical physics: double diffusion 35 36 USE in_out_manager ! I/O manager 36 USE zdfddm ! vertical physics: double diffusion37 USE lib_mpp ! MPP library 37 38 USE prtctl ! Print control 38 39 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traadv.F90
r2633 r2636 24 24 USE ldftra_oce ! lateral diffusion coefficient on tracers 25 25 USE in_out_manager ! I/O manager 26 USE iom ! I/O module 26 27 USE prtctl ! Print control 27 USE iom28 USE lib_mpp ! MPP library 28 29 29 30 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_cen2.F90
r2633 r2636 31 31 USE restart ! ocean restart 32 32 USE trc_oce ! share passive tracers/Ocean variables 33 USE lib_mpp ! MPP library 33 34 34 35 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilap.F90
r2633 r2636 28 28 USE diaptr ! poleward transport diagnostics 29 29 USE trc_oce ! share passive tracers/Ocean variables 30 USE lib_mpp ! MPP library 30 31 31 32 IMPLICIT NONE … … 166 167 END DO ! tracer loop 167 168 ! ! =========== 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') 171 170 ! 172 171 END SUBROUTINE tra_ldf_bilap -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90
r2633 r2636 24 24 USE diaptr ! poleward transport diagnostics 25 25 USE trc_oce ! share passive tracers/Ocean variables 26 USE lib_mpp ! MPP library 26 27 27 28 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90
r2633 r2636 25 25 USE iom ! I/O library 26 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 USE lib_mpp ! MPP library 27 28 28 29 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/tranpc.F90
r2633 r2636 18 18 USE zdf_oce ! ocean vertical physics 19 19 USE trdmod_oce ! ocean active tracer trends 20 USE trdtra ! ocean active tracer trends20 USE trdtra ! ocean active tracer trends 21 21 USE eosbn2 ! equation of state (eos routine) 22 22 USE lbclnk ! lateral boundary conditions (or mpp link) 23 23 USE in_out_manager ! I/O manager 24 USE lib_mpp ! MPP library 24 25 25 26 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r2633 r2636 28 28 USE fldread ! read input fields 29 29 USE restart ! ocean restart 30 USE lib_mpp ! MPP library 30 31 31 32 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf.F90
r2623 r2636 14 14 USE oce ! ocean dynamics and tracers variables 15 15 USE dom_oce ! ocean space and time domain variables 16 USE domvvl ! variable volume 17 USE phycst ! physical constant 16 18 USE zdf_oce ! ocean vertical physics variables 17 19 USE sbc_oce ! surface boundary condition: ocean … … 26 28 USE in_out_manager ! I/O manager 27 29 USE prtctl ! Print control 30 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 USE lib_mpp ! MPP library 28 32 29 USE phycst30 USE lbclnk ! ocean lateral boundary conditions (or mpp link)31 USE domvvl ! variable volume32 33 33 34 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_exp.F90
r2633 r2636 28 28 USE zdf_oce ! ocean vertical physics 29 29 USE zdfddm ! ocean vertical physics: double diffusion 30 USE trc_oce ! share passive tracers/Ocean variables 30 31 USE in_out_manager ! I/O manager 31 USE trc_oce ! share passive tracers/Ocean variables32 USE lib_mpp ! MPP library 32 33 33 34 IMPLICIT NONE … … 43 44 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 44 45 !! $Id$ 45 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)46 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 46 47 !!---------------------------------------------------------------------- 47 48 48 CONTAINS 49 49 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/trazdf_imp.F90
r2633 r2636 33 33 USE in_out_manager ! I/O manager 34 34 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 35 USE lib_mpp ! MPP library 35 36 36 37 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRA/zpshde.F90
r2633 r2636 20 20 USE in_out_manager ! I/O manager 21 21 USE lbclnk ! lateral boundary conditions (or mpp link) 22 USE lib_mpp ! MPP library 22 23 23 24 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdmld_oce.F90
r2629 r2636 91 91 !! *** FUNCTION trdmld_oce_alloc *** 92 92 !!---------------------------------------------------------------------- 93 USE in_out_manager, ONLY: ctl_warn94 93 USE lib_mpp 95 94 INTEGER :: ierr(5) -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdmod.F90
r2633 r2636 24 24 USE trdmld ! ocean active mixed layer tracers trends 25 25 USE in_out_manager ! I/O manager 26 USE lib_mpp ! MPP library 26 27 27 28 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdmod_trc.F90
r2528 r2636 4 4 !! Dummy module 5 5 !!====================================================================== 6 !!----------------------------------------------------------------------7 !! NEMO/OPA 3.3 , NEMO Consortium (2010)8 !! $Id$9 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)10 !!----------------------------------------------------------------------11 6 !!---------------------------------------------------------------------- 12 7 !! Dummy module NO TOP use … … 21 16 END SUBROUTINE trd_mod_trc 22 17 18 !!---------------------------------------------------------------------- 19 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 20 !! $Id$ 21 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 23 22 !!====================================================================== 24 23 END MODULE trdmod_trc -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
r2633 r2636 17 17 USE trdmod_trc ! ocean passive mixed layer tracers trends 18 18 USE in_out_manager ! I/O manager 19 USE lib_mpp ! MPP library 19 20 20 21 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdf_oce.F90
r2616 r2636 9 9 USE par_oce ! ocean parameters 10 10 USE in_out_manager ! I/O manager 11 USE lib_mpp ! MPP library 11 12 12 13 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90
r2633 r2636 21 21 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 22 22 USE prtctl ! Print control 23 USE lib_mpp ! MPP library 23 24 24 25 IMPLICIT NONE … … 56 57 IF( zdf_ddm_alloc /= 0 ) CALL ctl_warn('zdf_ddm_alloc: failed to allocate arrays') 57 58 END FUNCTION zdf_ddm_alloc 59 58 60 59 61 SUBROUTINE zdf_ddm( kt ) … … 89 91 !! References : Merryfield et al., JPO, 29, 1124-1142, 1999. 90 92 !!---------------------------------------------------------------------- 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 ! 98 97 INTEGER, INTENT(in) :: kt ! ocean time-step indexocean time step 99 ! !98 ! 100 99 INTEGER :: ji, jj , jk ! dummy loop indices 101 100 REAL(wp) :: zinr, zrr ! temporary scalars … … 105 104 106 105 IF( wrk_in_use(2, 1,2,3,4,5) ) THEN 107 CALL ctl_stop('zdf_ddm: Requested workspace arrays already in use .') ; RETURN106 CALL ctl_stop('zdf_ddm: Requested workspace arrays already in use') ; RETURN 108 107 END IF 109 108 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r2633 r2636 25 25 USE restart ! only for lrst_oce 26 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 USE lib_mpp ! MPP manager 27 28 USE prtctl ! Print control 28 29 USE in_out_manager ! I/O manager … … 106 107 !!---------------------------------------------------------------------- 107 108 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 108 !! $Id 109 !! $Id$ 109 110 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 110 111 !!---------------------------------------------------------------------- -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90
r2633 r2636 28 28 USE zdfddm ! double diffusion mixing 29 29 USE in_out_manager ! I/O manager 30 USE lib_mpp ! MPP library 30 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 32 USE prtctl ! Print control … … 167 168 ! 168 169 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') 170 171 END FUNCTION zdf_kpp_alloc 171 172 … … 1236 1237 IF( wrk_not_released(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR. & 1237 1238 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') 1239 1240 ! 1240 1241 END SUBROUTINE zdf_kpp -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90
r2633 r2636 14 14 USE in_out_manager ! I/O manager 15 15 USE prtctl ! Print control 16 USE iom 16 USE iom ! I/O library 17 USE lib_mpp ! MPP library 17 18 18 19 IMPLICIT NONE … … 64 65 !!---------------------------------------------------------------------- 65 66 USE wrk_nemo, ONLY: iwrk_in_use, iwrk_not_released 66 USE wrk_nemo, ONLY: imld => iwrk_2d_1 ! 2D workspace67 USE wrk_nemo, ONLY: imld => iwrk_2d_1 ! 2D integer workspace 67 68 !! 68 69 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 74 75 !!---------------------------------------------------------------------- 75 76 76 IF( iwrk_in_use(2, 1) )THEN77 CALL ctl_stop('zdf_mxl : requested workspace array unavailable .') ; RETURN77 IF( iwrk_in_use(2, 1) )THEN 78 CALL ctl_stop('zdf_mxl : requested workspace array unavailable') ; RETURN 78 79 END IF 79 80 … … 112 113 IF(ln_ctl) CALL prt_ctl( tab2d_1=REAL(nmln,wp), clinfo1=' nmln : ', tab2d_2=hmlp, clinfo2=' hmlp : ', ovlap=1 ) 113 114 ! 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') 115 116 ! 116 117 END SUBROUTINE zdf_mxl -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90
r2633 r2636 25 25 USE in_out_manager ! I/O manager 26 26 USE lbclnk ! ocean lateral boundary condition (or mpp link) 27 USE lib_mpp ! MPP library 27 28 28 29 IMPLICIT NONE … … 57 58 ! 58 59 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') 60 61 END FUNCTION zdf_ric_alloc 61 62 … … 97 98 !!---------------------------------------------------------------------- 98 99 99 IF( wrk_in_use(2, 1) ) THEN100 IF( wrk_in_use(2, 1) ) THEN 100 101 CALL ctl_stop('zdf_ric : requested workspace array unavailable') ; RETURN 101 102 END IF … … 150 151 CALL lbc_lnk( avmu, 'U', 1. ) ; CALL lbc_lnk( avmv, 'V', 1. ) 151 152 ! 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') 153 154 ! 154 155 END SUBROUTINE zdf_ric -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r2633 r2636 49 49 USE in_out_manager ! I/O manager 50 50 USE iom ! I/O manager library 51 USE lib_mpp ! MPP library 51 52 52 53 IMPLICIT NONE … … 189 190 !! (= Kz dz[Ub] * dz[Un] ) 190 191 !! --------------------------------------------------------------------- 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 198 197 !! 199 198 INTEGER :: ji, jj, jk ! dummy loop arguments -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
r2633 r2636 24 24 USE in_out_manager ! I/O manager 25 25 USE iom ! I/O Manager 26 USE lib_mpp ! MPP library 26 27 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 27 28 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/lib_print.f90
r2528 r2636 10 10 !! prizre : print an real 2D vertical field 11 11 !!---------------------------------------------------------------------- 12 !! * Mules used13 12 USE par_kind ! kind parameters 14 13 … … 16 15 PRIVATE 17 16 18 !! * Routine accessibility 19 PUBLIC prihin, prihre, prizre 20 !!---------------------------------------------------------------------- 17 PUBLIC prihin, prihre, prizre 18 21 19 !!---------------------------------------------------------------------- 22 20 !! NEMO/OPA 3.3 , NEMO Consortium (2010) … … 40 38 !! ! 03-07 (G. Madec) F90, free form 41 39 !!---------------------------------------------------------------------- 42 !! * Arguments43 40 INTEGER, INTENT( in ) :: & 44 41 ki, kj, & ! array dimensions -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/oce.F90
r2625 r2636 9 9 !!---------------------------------------------------------------------- 10 10 USE par_oce ! ocean parameters 11 USE in_out_manager ! I/O manager11 USE lib_mpp ! MPP library 12 12 13 13 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90
r2625 r2636 13 13 USE in_out_manager ! I/O manager 14 14 USE dom_oce ! ocean space and time domain 15 USE lib_mpp ! MPP library 15 16 16 17 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/LOBSTER/sms_lobster.F90
r2607 r2636 11 11 !! 2.0 ! 2007-04 (C. Deltel, G. Madec) Free form and modules 12 12 !!---------------------------------------------------------------------- 13 14 13 #if defined key_lobster 15 14 !!---------------------------------------------------------------------- … … 21 20 IMPLICIT NONE 22 21 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 !!----------------------------------------------------------------------29 22 30 23 !! biological parameters … … 108 101 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: cmask !: ??? 109 102 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 !!---------------------------------------------------------------------- 112 108 CONTAINS 113 109 114 FUNCTION sms_lobster_alloc()110 INTEGER FUNCTION sms_lobster_alloc() 115 111 !!---------------------------------------------------------------------- 116 112 !! *** ROUTINE sms_lobster_alloc *** 117 113 !!---------------------------------------------------------------------- 118 USE in_out_manager, ONLY: ctl_warn 119 INTEGER :: sms_lobster_alloc 114 USE lib_mpp, ONLY: ctl_warn 120 115 !!---------------------------------------------------------------------- 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 ! 133 125 END FUNCTION sms_lobster_alloc 134 126 … … 140 132 141 133 !!====================================================================== 142 143 134 END MODULE sms_lobster -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcnam_lobster.F90
r2567 r2636 10 10 !! 'key_lobster' : LOBSTER bio-model 11 11 !!---------------------------------------------------------------------- 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 19 20 20 21 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcopt.F90
r2633 r2636 21 21 USE sms_lobster 22 22 USE prtctl_trc ! Print control for debbuging 23 USE lib_mpp ! MPP library 23 24 24 25 IMPLICIT NONE … … 69 70 70 71 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 73 73 END IF 74 74 … … 138 138 ENDIF 139 139 ! 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') 143 142 ! 144 143 END SUBROUTINE trc_opt -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsms_lobster.F90
r2633 r2636 13 13 !! trcsms_lobster : Time loop of passive tracers sms 14 14 !!---------------------------------------------------------------------- 15 USE oce_trc !15 USE oce_trc ! 16 16 USE trc 17 17 USE trcbio … … 23 23 USE trdmod_trc 24 24 USE trdmld_trc 25 USE lib_mpp ! MPP library 25 26 26 27 IMPLICIT NONE … … 32 33 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 33 34 !! $Id$ 34 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)35 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 35 36 !!---------------------------------------------------------------------- 36 37 37 CONTAINS 38 38 … … 53 53 !! -------------------------------------------------------------------- 54 54 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 59 58 60 59 CALL trc_opt( kt ) ! optical model … … 72 71 IF( lk_trdmld_trc ) CALL trd_mld_bio( kt ) ! trends: Mixed-layer 73 72 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 ! 78 75 END SUBROUTINE trc_sms_lobster 79 76 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcadv.F90
r2633 r2636 10 10 !!---------------------------------------------------------------------- 11 11 !! 'key_top' TOP models 12 !!----------------------------------------------------------------------13 12 !!---------------------------------------------------------------------- 14 13 !! trc_adv : compute ocean tracer advection trend … … 27 26 USE ldftra_oce ! lateral diffusion coefficient on tracers 28 27 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 30 30 31 31 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
r2610 r2636 3 3 !! *** MODULE trcnxt *** 4 4 !! Ocean passive tracers: time stepping on passives tracers 5 !!======================================================================6 5 !!====================================================================== 7 6 !! History : 7.0 ! 1991-11 (G. Madec) Original code … … 27 26 !! trc_nxt : time stepping on passive tracers 28 27 !!---------------------------------------------------------------------- 29 !! * Modules used30 28 USE oce_trc ! ocean dynamics and tracers variables 31 29 USE trc ! ocean passive tracers variables … … 43 41 PRIVATE 44 42 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 48 45 49 46 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt 47 50 48 !!---------------------------------------------------------------------- 51 49 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 52 50 !! $Id$ 53 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)51 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 54 52 !!---------------------------------------------------------------------- 55 56 53 CONTAINS 57 54 58 FUNCTION trc_nxt_alloc()55 INTEGER FUNCTION trc_nxt_alloc() 59 56 !!---------------------------------------------------------------------- 60 57 !! *** ROUTINE trc_nxt_alloc *** 61 58 !!---------------------------------------------------------------------- 62 INTEGER :: trc_nxt_alloc59 USE lib_mpp, ONLY: ctl_warn 63 60 !!---------------------------------------------------------------------- 64 61 ! 65 62 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 ! 71 66 END FUNCTION trc_nxt_alloc 72 67 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
r2633 r2636 16 16 !! trc_sbc : update the tracer trend at ocean surface 17 17 !!---------------------------------------------------------------------- 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 22 21 USE trdmod_oce 23 22 USE trdtra 23 USE lib_mpp ! MPP library 24 24 25 25 IMPLICIT NONE 26 26 PRIVATE 27 27 28 !! * Routine accessibility 29 PUBLIC trc_sbc ! routine called by step.F90 28 PUBLIC trc_sbc ! routine called by step.F90 30 29 31 30 !! * Substitutions … … 34 33 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 35 34 !! $Id$ 36 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)35 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 37 36 !!---------------------------------------------------------------------- 38 39 37 CONTAINS 40 38 … … 62 60 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 63 61 USE wrk_nemo, zemps => wrk_2d_1 64 ! ! * Arguments62 ! 65 63 INTEGER, INTENT( in ) :: kt ! ocean time-step index 66 67 !! * Local declarations 64 ! 68 65 INTEGER :: ji, jj, jn ! dummy loop indices 69 66 REAL(wp) :: zsrau, zse3t ! temporary scalars … … 73 70 74 71 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 77 73 END IF 78 74 … … 126 122 ENDIF 127 123 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 ! 132 126 END SUBROUTINE trc_sbc 133 127 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
r2606 r2636 20 20 USE trazdf_exp ! vertical diffusion: explicit (tra_zdf_exp routine) 21 21 USE trazdf_imp ! vertical diffusion: implicit (tra_zdf_imp routine) 22 USE trdmod_oce 23 USE trdtra 22 24 USE prtctl_trc ! Print control 23 25 USE in_out_manager ! I/O manager 24 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 25 USE trdmod_oce 26 USE trdtra 27 USE lib_mpp ! MPP library 27 28 28 29 IMPLICIT NONE -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trdmld_trc.F90
r2633 r2636 23 23 USE zdfddm , ONLY : avs !: salinity vertical diffusivity coeff. at w-point 24 24 # endif 25 USE trcnam_trp ! passive tracers transport namelist variables25 USE trcnam_trp ! passive tracers transport namelist variables 26 26 USE trdmod_trc_oce ! definition of main arrays used for trends computations 27 27 USE in_out_manager ! I/O manager … … 30 30 USE ioipsl ! NetCDF library 31 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 32 USE lib_mpp ! MPP library 32 33 USE trdmld_trc_rst ! restart for diagnosing the ML trends 33 34 USE prtctl ! print control … … 47 48 CHARACTER (LEN=40) :: clhstnam ! name of the trends NetCDF file 48 49 INTEGER :: nmoymltrd 49 INTEGER :: ndextrd1(jpi*jpj)50 INTEGER, ALLOCATABLE, SAVE, DIMENSION(:) :: ndextrd1 50 51 INTEGER, DIMENSION(jptra) :: nidtrd, nh_t 51 52 INTEGER :: ndimtrd1 … … 87 88 ztmltrdbio2(jpi,jpj,jpdiabio) , & 88 89 #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.') 95 94 END FUNCTION trd_mld_trc_alloc 96 95 … … 125 124 !!---------------------------------------------------------------------- 126 125 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 130 128 END IF 131 129 … … 213 211 END SELECT 214 212 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 ! 219 215 END SUBROUTINE trd_mld_trc_zint 220 216 217 221 218 SUBROUTINE trd_mld_bio_zint( ptrc_trdmld, ktrd ) 222 219 !!---------------------------------------------------------------------- … … 387 384 !! - See NEMO documentation (in preparation) 388 385 !!---------------------------------------------------------------------- 389 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released390 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_9386 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 ! 393 390 INTEGER, INTENT( in ) :: kt ! ocean time-step index 394 391 INTEGER :: ji, jj, jk, jl, ik, it, itmod, jn … … 414 411 !!---------------------------------------------------------------------- 415 412 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 420 416 ! Set-up pointers into sub-arrays of workspaces 421 417 ztmltot => wrk_3d_1(:,:,1:jptra) -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/TRP/trdmod_trc_oce.F90
r2610 r2636 4 4 !! Ocean trends : set tracer and momentum trend variables 5 5 !!====================================================================== 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 12 7 !!---------------------------------------------------------------------- 13 8 !! 'key_top' TOP models 14 9 !!---------------------------------------------------------------------- 15 10 16 USE par_oce 17 USE par_trc 11 USE par_oce ! ocean parameters 12 USE par_trc ! passive tracers parameters 18 13 19 14 IMPLICIT NONE 20 15 PUBLIC 21 16 22 ! !* Namelist namtoptrd: diagnostics on passive tracers trends23 INTEGER :: nn_trd_trc !: time step frequency dynamics and tracers trends24 INTEGER :: nn_ctls_trc !: control surface type for trends vertical integration17 ! !!* 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 25 20 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 trends27 LOGICAL :: ln_trdmld_trc_restart !: flag to restart mixed-layer trc diagnostics28 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) 30 25 LOGICAL, DIMENSION (jptra) :: ln_trdtrc !: large trends diagnostic to write or not (namelist) 31 26 32 27 # if defined key_trdtrc && defined key_iomput 33 28 LOGICAL, PARAMETER :: lk_trdtrc = .TRUE. 34 # else29 # else 35 30 LOGICAL, PARAMETER :: lk_trdtrc = .FALSE. !: ML trend flag 36 # endif31 # endif 37 32 38 # if defined key_trdmld_trc33 # if defined key_trdmld_trc || defined key_esopa 39 34 !!---------------------------------------------------------------------- 40 35 !! 'key_trdmld_trc' mixed layer trends diagnostics … … 108 103 tmltrdm_trc !: total cumulative trends over the analysis window 109 104 110 # else105 # else 111 106 LOGICAL, PARAMETER :: lk_trdmld_trc = .FALSE. !: ML trend flag 112 # endif107 # endif 113 108 114 # if defined key_lobster109 # if defined key_lobster 115 110 CHARACTER(LEN=80) :: clname_bio, ctrd_bio(jpdiabio,2) 116 111 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: & … … 121 116 tmltrd_csum_ub_bio !: before (prev. analysis period) cumulated sum over the 122 117 !: upper triangle 123 #endif 124 125 #else 118 # endif 126 119 !!---------------------------------------------------------------------- 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) 128 123 !!---------------------------------------------------------------------- 129 #endif130 131 #if defined key_top132 124 CONTAINS 133 125 134 FUNCTION trd_mod_trc_oce_alloc()126 INTEGER FUNCTION trd_mod_trc_oce_alloc() 135 127 !!---------------------------------------------------------------------- 136 128 !! *** ROUTINE trd_mod_trc_oce_alloc *** 137 129 !!---------------------------------------------------------------------- 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 142 131 INTEGER :: ierr(2) 143 132 !!---------------------------------------------------------------------- … … 145 134 ierr(:) = 0 146 135 147 # if defined key_trdmld_trc136 # if defined key_trdmld_trc 148 137 ALLOCATE(nmld_trc(jpi,jpj), nbol_trc(jpi,jpj), & 149 138 wkx_trc(jpi,jpj,jpk), rmld_trc(jpi,jpj), & … … 166 155 tmltrdm_trc(jpi,jpj,jptra), & 167 156 Stat=ierr(1)) 168 # endif169 # if defined key_lobster157 # endif 158 # if defined key_lobster 170 159 ALLOCATE(tmltrd_bio(jpi,jpj,jpdiabio), & 171 160 tmltrd_sum_bio(jpi,jpj,jpdiabio), & … … 173 162 tmltrd_csum_ub_bio(jpi,jpj,jpdiabio), & 174 163 Stat=ierr(2)) 175 # endif164 # endif 176 165 177 166 trd_mod_trc_oce_alloc = MAXVAL(ierr) 178 167 179 IF(trd_mod_trc_oce_alloc /= 0)THEN 180 CALL ctl_warn('trd_mod_trc_oce_alloc : failed to allocate arrays.') 181 END IF 168 IF( trd_mod_trc_oce_alloc /= 0 ) CALL ctl_warn('trd_mod_trc_oce_alloc : failed to allocate arrays') 182 169 183 #if defined key_trdmld_trc 184 ! Initialise what used to be a parameter - max level for mixed-layer 185 ! trends diag. 186 jpktrd_trc = jpk 170 # if defined key_trdmld_trc 171 jpktrd_trc = jpk ! Initialise what used to be a parameter - max level for mixed-layer trends diag. 172 # endif 173 ! 174 END FUNCTION trd_mod_trc_oce_alloc 175 176 #else 177 !!---------------------------------------------------------------------- 178 !! Empty module : No passive tracer 179 !!---------------------------------------------------------------------- 187 180 #endif 188 181 189 END FUNCTION trd_mod_trc_oce_alloc 190 #endif 191 182 !!====================================================================== 192 183 END MODULE trdmod_trc_oce -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/trc.F90
r2607 r2636 78 78 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:, :) :: trc2d !: additional 2d outputs 79 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION (:,:,:,:) :: trc3d !: additional 3d outputs 80 81 80 # endif 82 81 83 # if defined key_diabio || defined key_trdmld_trc82 # if defined key_diabio || defined key_trdmld_trc 84 83 ! !!* namtop_XXX namelist * 85 84 INTEGER , PUBLIC :: nn_writebio !: time step frequency for biological outputs … … 87 86 CHARACTER(len=20), PUBLIC, DIMENSION(jpdiabio) :: ctrbiu !: biological trends unit 88 87 CHARACTER(len=80), PUBLIC, DIMENSION(jpdiabio) :: ctrbil !: biological trends long name 89 # endif88 # endif 90 89 # if defined key_diabio 91 90 !! Biological trends … … 101 100 # endif 102 101 103 #else104 !!----------------------------------------------------------------------105 !! Empty module : No passive tracer106 !!----------------------------------------------------------------------107 #endif108 109 102 !!---------------------------------------------------------------------- 110 103 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 111 104 !! $Id$ 112 105 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 113 !!====================================================================== 114 #if defined key_top 106 !!---------------------------------------------------------------------- 115 107 CONTAINS 116 108 117 FUNCTION trc_alloc()109 INTEGER FUNCTION trc_alloc() 118 110 !!------------------------------------------------------------------- 119 111 !! *** ROUTINE trc_alloc *** 120 112 !!------------------------------------------------------------------- 121 USE in_out_manager, ONLY: ctl_warn 113 USE lib_mpp, ONLY: ctl_warn 114 !!------------------------------------------------------------------- 122 115 ! 123 INTEGER :: trc_alloc124 !!-------------------------------------------------------------------125 126 116 ALLOCATE(cvol(jpi,jpj,jpk), & 127 117 trn(jpi,jpj,jpk,jptra), & … … 132 122 # if defined key_diatrc && ! defined key_iomput 133 123 trc2d(jpi,jpj,jpdia2d), trc3d(jpi,jpj,jpk,jpdia3d), & 134 # endif124 # endif 135 125 # if defined key_diabio 136 126 trbio(jpi,jpj,jpk,jpdiabio), & 137 # endif138 S tat=trc_alloc)127 # endif 128 STAT=trc_alloc) 139 129 140 IF(trc_alloc /= 0)THEN 141 CALL ctl_warn('trc_alloc: failed to allocate arrays.') 142 END IF 143 130 IF( trc_alloc /= 0 ) CALL ctl_warn('trc_alloc: failed to allocate arrays') 131 ! 144 132 END FUNCTION trc_alloc 133 134 #else 135 !!---------------------------------------------------------------------- 136 !! Empty module : No passive tracer 137 !!---------------------------------------------------------------------- 145 138 #endif 146 139 140 !!====================================================================== 147 141 END MODULE trc -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
r2528 r2636 27 27 USE trcnam_my_trc ! MY_TRC SMS namelist 28 28 USE in_out_manager ! I/O manager 29 USE lib_mpp ! MPP library 29 30 USE trdmod_trc_oce 30 31 -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/TOP_SRC/trcsms.F90
r2528 r2636 30 30 !! NEMO/TOP 3.3 , NEMO Consortium (2010) 31 31 !! $Id$ 32 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)32 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 33 33 !!---------------------------------------------------------------------- 34 35 34 CONTAINS 36 35
Note: See TracChangeset
for help on using the changeset viewer.