- Timestamp:
- 2011-11-20T16:02:18+01:00 (12 years ago)
- Location:
- branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/divcur.F90
r3116 r3161 31 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 32 32 USE lib_mpp ! MPP library 33 USE wrk_nemo_2 ! Memory Allocation 34 USE timing ! Timing 33 35 34 36 IMPLICIT NONE … … 83 85 INTEGER, INTENT(in) :: kt ! ocean time-step index 84 86 ! 85 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zwu ! specific 2D workspace86 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zwv ! specific 2D workspace87 !88 87 INTEGER :: ji, jj, jk, jl ! dummy loop indices 89 88 INTEGER :: ii, ij, ijt, iju, ierr ! local integer 90 89 REAL(wp) :: zraur, zdep ! local scalar 91 !!---------------------------------------------------------------------- 92 90 REAL(wp), POINTER, DIMENSION(:,:) :: zwu, zwv ! specific 2D workspace 91 !!---------------------------------------------------------------------- 92 ! 93 IF( nn_timing == 1 ) CALL timing_start('div_cur') 94 ! 95 CALL wrk_alloc( jpi , jpj+2, zwu, kistart = 1 ) 96 CALL wrk_alloc( jpi+2, jpj , zwv, kjstart = -1 ) 97 ! 93 98 IF( kt == nit000 ) THEN 94 99 IF(lwp) WRITE(numout,*) 95 100 IF(lwp) WRITE(numout,*) 'div_cur : horizontal velocity divergence and relative vorticity' 96 101 IF(lwp) WRITE(numout,*) '~~~~~~~ NOT optimal for auto-tasking case' 97 !98 ALLOCATE( zwu( jpi, 1:jpj+2) , zwv(-1:jpi+2, jpj) , STAT=ierr )99 IF( lk_mpp ) CALL mpp_sum( ierr )100 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'div_cur : unable to allocate arrays' )101 102 ENDIF 102 103 … … 230 231 CALL lbc_lnk( hdivn, 'T', 1. ) ; CALL lbc_lnk( rotn , 'F', 1. ) ! lateral boundary cond. (no sign change) 231 232 ! 233 CALL wrk_dealloc( jpi , jpj+2, zwu, kistart = 1 ) 234 CALL wrk_dealloc( jpi+2, jpj , zwv, kjstart = -1 ) 235 ! 236 IF( nn_timing == 1 ) CALL timing_stop('div_cur') 237 ! 232 238 END SUBROUTINE div_cur 233 239 … … 267 273 REAL(wp) :: zraur, zdep ! local scalars 268 274 !!---------------------------------------------------------------------- 269 275 ! 276 IF( nn_timing == 1 ) CALL timing_start('div_cur') 277 ! 270 278 IF( kt == nit000 ) THEN 271 279 IF(lwp) WRITE(numout,*) … … 319 327 CALL lbc_lnk( hdivn, 'T', 1. ) ; CALL lbc_lnk( rotn , 'F', 1. ) ! lateral boundary cond. (no sign change) 320 328 ! 329 IF( nn_timing == 1 ) CALL timing_stop('div_cur') 330 ! 321 331 END SUBROUTINE div_cur 322 332 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90
r2715 r3161 19 19 USE in_out_manager ! I/O manager 20 20 USE lib_mpp ! MPP library 21 USE timing ! Timing 21 22 22 23 IMPLICIT NONE … … 57 58 !!---------------------------------------------------------------------- 58 59 ! 60 IF( nn_timing == 1 ) CALL timing_start('dyn_adv') 61 ! 59 62 SELECT CASE ( nadv ) ! compute advection trend and add it to general trend 60 63 CASE ( 0 ) … … 72 75 CALL dyn_adv_ubs ( kt ) 73 76 END SELECT 77 ! 78 IF( nn_timing == 1 ) CALL timing_stop('dyn_adv') 74 79 ! 75 80 END SUBROUTINE dyn_adv -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90
r2977 r3161 20 20 USE lib_mpp ! MPP library 21 21 USE prtctl ! Print control 22 USE wrk_nemo_2 ! Memory Allocation 23 USE timing ! Timing 22 24 23 25 IMPLICIT NONE … … 47 49 !! ** Action : (ua,va) updated with the now vorticity term trend 48 50 !!---------------------------------------------------------------------- 49 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released50 51 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 51 USE wrk_nemo, ONLY: zfu_t => wrk_3d_1 , zfv_t => wrk_3d_4 , zfu_uw =>wrk_3d_6 ! 3D workspaces52 USE wrk_nemo, ONLY: zfu_f => wrk_3d_2 , zfv_f => wrk_3d_5 , zfv_vw =>wrk_3d_753 USE wrk_nemo, ONLY: zfw => wrk_3d_354 52 ! 55 53 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 57 55 INTEGER :: ji, jj, jk ! dummy loop indices 58 56 REAL(wp) :: zbu, zbv ! local scalars 57 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw 59 58 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfv 60 59 !!---------------------------------------------------------------------- 61 60 ! 61 IF( nn_timing == 1 ) CALL timing_start('dyn_adv_cen2') 62 ! 63 CALL wrk_alloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw ) 64 zfu => tsa(:,:,:,1) 65 zfv => tsa(:,:,:,2) 66 ! 62 67 IF( kt == nit000 .AND. lwp ) THEN 63 68 WRITE(numout,*) … … 65 70 WRITE(numout,*) '~~~~~~~~~~~~' 66 71 ENDIF 67 68 ! Check that global workspace arrays aren't already in use69 IF( wrk_in_use(3, 1,2,3,4,5,6,7) ) THEN70 CALL ctl_stop('dyn_adv_cen2 : requested workspace array unavailable') ; RETURN71 ENDIF72 !73 zfu => tsa(:,:,:,1)74 zfv => tsa(:,:,:,2)75 72 ! 76 73 IF( l_trddyn ) THEN ! Save ua and va trends … … 166 163 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 167 164 ! 168 IF( wrk_not_released(3, 1,2,3,4,5,6,7) ) CALL ctl_stop('dyn_adv_cen2: failed to release workspace array') 165 CALL wrk_dealloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw ) 166 ! 167 IF( nn_timing == 1 ) CALL timing_stop('dyn_adv_cen2') 169 168 ! 170 169 END SUBROUTINE dyn_adv_cen2 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
r2977 r3161 22 22 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 23 23 USE lib_mpp ! MPP library 24 USE wrk_nemo_2 ! Memory Allocation 25 USE timing ! Timing 24 26 25 27 IMPLICIT NONE … … 68 70 !! Reference : Shchepetkin & McWilliams, 2005, Ocean Modelling. 69 71 !!---------------------------------------------------------------------- 70 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released71 72 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 72 USE wrk_nemo, ONLY: zfu_t => wrk_3d_1 , zfv_t =>wrk_3d_4 , zfu_uw =>wrk_3d_6 ! 3D workspace73 USE wrk_nemo, ONLY: zfu_f => wrk_3d_2 , zfv_f =>wrk_3d_5 , zfv_vw =>wrk_3d_774 USE wrk_nemo, ONLY: zfw => wrk_3d_375 USE wrk_nemo, ONLY: zlu_uu => wrk_4d_1 , zlv_vv=>wrk_4d_3 ! 4D workspace76 USE wrk_nemo, ONLY: zlu_uv => wrk_4d_2 , zlv_vu=>wrk_4d_477 73 ! 78 74 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 81 77 REAL(wp) :: zbu, zbv ! temporary scalars 82 78 REAL(wp) :: zui, zvj, zfuj, zfvi, zl_u, zl_v ! temporary scalars 83 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfv 79 REAL(wp), POINTER, DIMENSION(:,:,: ) :: zfu, zfv 80 REAL(wp), POINTER, DIMENSION(:,:,: ) :: zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw 81 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zlu_uu, zlv_vv, zlu_uv, zlv_vu 84 82 !!---------------------------------------------------------------------- 85 83 ! 84 IF( nn_timing == 1 ) CALL timing_start('dyn_adv_ubs') 85 ! 86 CALL wrk_alloc( jpi, jpj, jpk, zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfw ) 87 CALL wrk_alloc( jpi, jpj, jpk, jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu ) 88 zfu => tsa(:,:,:,1) 89 zfv => tsa(:,:,:,2) 90 ! 86 91 IF( kt == nit000 ) THEN 87 92 IF(lwp) WRITE(numout,*) … … 89 94 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 90 95 ENDIF 91 92 ! Check that required workspace arrays are not already in use93 IF( wrk_in_use(3, 1,2,3,4,5,6,7) .OR. wrk_in_use(4, 1,2,3,4) ) THEN94 CALL ctl_stop('dyn_adv_ubs: requested workspace array unavailable') ; RETURN95 ENDIF96 !97 zfu => tsa(:,:,:,1)98 zfv => tsa(:,:,:,2)99 96 ! 100 97 zfu_t(:,:,:) = 0._wp … … 258 255 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 259 256 ! 260 IF( wrk_not_released(3, 1,2,3,4,5,6,7) .OR. & 261 wrk_not_released(4, 1,2,3,4) ) CALL ctl_stop('dyn_adv_ubs: failed to release workspace array') 257 CALL wrk_dealloc( jpi, jpj, jpk, zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfw ) 258 CALL wrk_dealloc( jpi, jpj, jpk, jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu ) 259 ! 260 IF( nn_timing == 1 ) CALL timing_stop('dyn_adv_ubs') 262 261 ! 263 262 END SUBROUTINE dyn_adv_ubs -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90
r3116 r3161 18 18 USE in_out_manager ! I/O manager 19 19 USE prtctl ! Print control 20 USE timing ! Timing 20 21 21 22 IMPLICIT NONE … … 52 53 !!--------------------------------------------------------------------- 53 54 ! 54 IF( .not. ln_bfrimp) THEN ! only for explicit bottom friction form 55 IF( nn_timing == 1 ) CALL timing_start('dyn_bfr') 56 ! 57 IF( .NOT.ln_bfrimp) THEN ! only for explicit bottom friction form 55 58 ! implicit bfr is implemented in dynzdf_imp 56 59 ! H. Liu, Sept. 2011 … … 91 94 ! 92 95 ENDIF ! end explicit bottom friction 96 ! 97 IF( nn_timing == 1 ) CALL timing_stop('dyn_bfr') 98 ! 93 99 END SUBROUTINE dyn_bfr 94 100 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r3142 r3161 37 37 USE lbclnk ! lateral boundary condition 38 38 USE lib_mpp ! MPP library 39 USE wrk_nemo_2 ! Memory Allocation 40 USE timing ! Timing 39 41 40 42 IMPLICIT NONE … … 80 82 !!---------------------------------------------------------------------- 81 83 ! 84 IF( nn_timing == 1 ) CALL timing_start('dyn_hpg') 85 ! 82 86 IF( l_trddyn ) THEN ! Temporary saving of ua and va trends (l_trddyn) 83 87 ztrdu => tsa(:,:,:,1) … … 104 108 IF(ln_ctl) CALL prt_ctl( tab3d_1=ua, clinfo1=' hpg - Ua: ', mask1=umask, & 105 109 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 110 ! 111 IF( nn_timing == 1 ) CALL timing_stop('dyn_hpg') 106 112 ! 107 113 END SUBROUTINE dyn_hpg … … 436 442 !! Reference: Shchepetkin and McWilliams, J. Geophys. Res., 108(C3), 3090, 2003 437 443 !!---------------------------------------------------------------------- 438 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released439 444 USE oce , ONLY: tsa ! (tsa) used as 2 3D workspace 440 USE wrk_nemo, ONLY: drhox => wrk_3d_1 , dzx => wrk_3d_2441 USE wrk_nemo, ONLY: drhou => wrk_3d_3 , dzu => wrk_3d_4 , rho_i => wrk_3d_5442 USE wrk_nemo, ONLY: drhoy => wrk_3d_6 , dzy => wrk_3d_7443 USE wrk_nemo, ONLY: drhov => wrk_3d_8 , dzv => wrk_3d_9 , rho_j => wrk_3d_10444 USE wrk_nemo, ONLY: drhoz => wrk_3d_11 , dzz => wrk_3d_12445 USE wrk_nemo, ONLY: drhow => wrk_3d_13 , dzw => wrk_3d_14446 USE wrk_nemo, ONLY: rho_k => wrk_3d_15447 445 !! 448 446 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 453 451 REAL(wp) :: z1_12, cffv, cffy ! " " 454 452 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhpi, zhpj 455 !!---------------------------------------------------------------------- 456 457 IF( wrk_in_use(3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) ) THEN 458 CALL ctl_stop('dyn:hpg_djc: requested workspace arrays unavailable') ; RETURN 459 ENDIF 460 ! 453 REAL(wp), POINTER, DIMENSION(:,:,:) :: dzx, dzy, dzz, dzu, dzv, dzw 454 REAL(wp), POINTER, DIMENSION(:,:,:) :: drhox, drhoy, drhoz, drhou, drhov, drhow 455 REAL(wp), POINTER, DIMENSION(:,:,:) :: rho_i, rho_j, rho_k 456 !!---------------------------------------------------------------------- 457 ! 458 CALL wrk_alloc( jpi, jpj, jpk, dzx , dzy , dzz , dzu , dzv , dzw ) 459 CALL wrk_alloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 460 CALL wrk_alloc( jpi, jpj, jpk, rho_i, rho_j, rho_k ) 461 461 zhpi => tsa(:,:,:,1) 462 462 zhpj => tsa(:,:,:,2) 463 ! 463 464 464 465 IF( kt == nit000 ) THEN … … 657 658 END DO 658 659 ! 659 IF( wrk_not_released(3, 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15) ) & 660 CALL ctl_stop('dyn:hpg_djc: failed to release workspace arrays') 660 CALL wrk_dealloc( jpi, jpj, jpk, dzx , dzy , dzz , dzu , dzv , dzw ) 661 CALL wrk_dealloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 662 CALL wrk_dealloc( jpi, jpj, jpk, rho_i, rho_j, rho_k ) 661 663 ! 662 664 END SUBROUTINE hpg_djc … … 676 678 !! 677 679 !!---------------------------------------------------------------------- 678 679 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released680 680 USE oce , ONLY: tsa ! (tsa) used as 2 3D workspace 681 USE wrk_nemo, ONLY: zhpi => wrk_3d_3682 USE wrk_nemo, ONLY: zu => wrk_3d_4683 USE wrk_nemo, ONLY: zv => wrk_3d_5684 USE wrk_nemo, ONLY: fsp => wrk_3d_6685 USE wrk_nemo, ONLY: xsp => wrk_3d_7686 USE wrk_nemo, ONLY: asp => wrk_3d_8687 USE wrk_nemo, ONLY: bsp => wrk_3d_9688 USE wrk_nemo, ONLY: csp => wrk_3d_10689 USE wrk_nemo, ONLY: dsp => wrk_3d_11690 !!691 681 !!---------------------------------------------------------------------- 692 682 !! … … 704 694 INTEGER :: zbhitwe, zbhitns 705 695 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdeptht, zrhh 706 !!---------------------------------------------------------------------- 707 708 IF( wrk_in_use(3, 3,4,5,6,7,8,9,10,11) ) THEN 709 CALL ctl_stop('dyn:hpg_prj: requested workspace arrays unavailable') ; RETURN 710 ENDIF 711 ! 696 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp 697 !!---------------------------------------------------------------------- 698 ! 699 CALL wrk_alloc( jpi, jpj, jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 712 700 zdeptht => tsa(:,:,:,1) 713 701 zrhh => tsa(:,:,:,2) 714 702 ! 715 703 IF( kt == nit000 ) THEN 716 704 IF(lwp) WRITE(numout,*) … … 964 952 END DO 965 953 END DO 966 967 ! 968 IF( wrk_not_released(3, 3,4,5,6,7,8,9,10,11) ) & 969 CALL ctl_stop('dyn:hpg_prj: failed to release workspace arrays') 954 ! 955 CALL wrk_dealloc( jpi, jpj, jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 970 956 ! 971 957 END SUBROUTINE hpg_prj -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90
r2977 r3161 19 19 USE lib_mpp ! MPP library 20 20 USE prtctl ! Print control 21 USE wrk_nemo_2 ! Memory Allocation 22 USE timing ! Timing 21 23 22 24 IMPLICIT NONE … … 52 54 !! - save this trends (l_trddyn=T) for post-processing 53 55 !!---------------------------------------------------------------------- 54 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released55 56 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 56 USE wrk_nemo, ONLY: zhke => wrk_3d_1 ! 3D workspace57 57 !! 58 58 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 60 60 INTEGER :: ji, jj, jk ! dummy loop indices 61 61 REAL(wp) :: zu, zv ! temporary scalars 62 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 62 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhke 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 63 64 !!---------------------------------------------------------------------- 64 65 IF( wrk_in_use(3,1) ) THEN66 CALL ctl_stop('dyn_keg: requested workspace array is unavailable') ; RETURN67 ENDIF68 65 ! 66 IF( nn_timing == 1 ) CALL timing_start('dyn_keg') 67 ! 68 CALL wrk_alloc( jpi, jpj, jpk, zhke ) 69 ! 69 70 IF( kt == nit000 ) THEN 70 71 IF(lwp) WRITE(numout,*) … … 140 141 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 141 142 ! 142 IF( wrk_not_released(3, 1) ) CALL ctl_stop('dyn_keg: failed to release workspace array') 143 CALL wrk_dealloc( jpi, jpj, jpk, zhke ) 144 ! 145 IF( nn_timing == 1 ) CALL timing_stop('dyn_keg') 143 146 ! 144 147 END SUBROUTINE dyn_keg -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
r2715 r3161 26 26 USE lib_mpp ! distribued memory computing library 27 27 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 28 USE wrk_nemo_2 ! Memory Allocation 29 USE timing ! Timing 30 28 31 29 32 IMPLICIT NONE … … 51 54 !! ** Purpose : compute the lateral ocean dynamics physics. 52 55 !!---------------------------------------------------------------------- 53 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released54 USE wrk_nemo, ONLY: ztrdu => wrk_3d_1 , ztrdv => wrk_3d_255 56 ! 56 57 INTEGER, INTENT(in) :: kt ! ocean time-step index 57 ! !----------------------------------------------------------------------58 59 IF( wrk_in_use(3, 1,2) ) THEN60 CALL ctl_stop('dyn_ldf: requested workspace arrays unavailable') ; RETURN61 ENDIF58 ! 59 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 60 !!---------------------------------------------------------------------- 61 ! 62 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf') 62 63 ! 63 64 IF( l_trddyn ) THEN ! temporary save of ta and sa trends 65 CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 64 66 ztrdu(:,:,:) = ua(:,:,:) 65 67 ztrdv(:,:,:) = va(:,:,:) … … 105 107 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 106 108 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_ldf, 'DYN', kt ) 109 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 107 110 ENDIF 108 111 ! ! print sum trends (used for debugging) … … 110 113 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 111 114 ! 112 IF( wrk_not_released(3, 1,2) ) CALL ctl_stop('dyn_ldf: failed to release workspace arrays')115 IF( nn_timing == 1 ) CALL timing_stop('dyn_ldf') 113 116 ! 114 117 END SUBROUTINE dyn_ldf -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
r2715 r3161 23 23 USE trdmod_oce ! ocean variables trends 24 24 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 25 USE wrk_nemo_2 ! Memory Allocation 26 USE timing ! Timing 25 27 26 28 IMPLICIT NONE … … 74 76 !! mixing trend. 75 77 !!---------------------------------------------------------------------- 76 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released77 USE wrk_nemo, ONLY: zcu => wrk_2d_1 , zcv => wrk_2d_2 ! 3D workspace78 USE wrk_nemo, ONLY: zuf => wrk_3d_3 , zut => wrk_3d_4 ! 3D workspace79 USE wrk_nemo, ONLY: zlu => wrk_3d_5 , zlv => wrk_3d_680 78 ! 81 79 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 83 81 INTEGER :: ji, jj, jk ! dummy loop indices 84 82 REAL(wp) :: zua, zva, zbt, ze2u, ze2v ! temporary scalar 83 REAL(wp), POINTER, DIMENSION(:,: ) :: zcu, zcv 84 REAL(wp), POINTER, DIMENSION(:,:,:) :: zuf, zut, zlu, zlv 85 85 !!---------------------------------------------------------------------- 86 87 IF( wrk_in_use(2, 1,2) .OR. wrk_in_use(3, 3,4,5,6) ) THEN 88 CALL ctl_stop('dyn_ldf_bilap : requested workspace arrays unavailable') ; RETURN 89 ENDIF 90 86 ! 87 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf_bilap') 88 ! 89 CALL wrk_alloc( jpi, jpj, zcu, zcv ) 90 CALL wrk_alloc( jpi, jpj, jpk, zuf, zut, zlu, zlv ) 91 ! 91 92 IF( kt == nit000 .AND. lwp ) THEN 92 93 WRITE(numout,*) … … 207 208 END DO ! End of slab 208 209 ! ! =============== 209 IF( wrk_not_released(2, 1,2) .OR. & 210 wrk_not_released(3, 3,4,5,6) ) CALL ctl_stop('dyn_ldf_bilap: failed to release workspace arrays') 210 CALL wrk_dealloc( jpi, jpj, zcu, zcv ) 211 CALL wrk_dealloc( jpi, jpj, jpk, zuf, zut, zlu, zlv ) 212 ! 213 IF( nn_timing == 1 ) CALL timing_stop('dyn_ldf_bilap') 211 214 ! 212 215 END SUBROUTINE dyn_ldf_bilap -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90
r2977 r3161 27 27 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 28 28 USE prtctl ! Print control 29 USE wrk_nemo_2 ! Memory Allocation 30 USE timing ! Timing 31 29 32 30 33 IMPLICIT NONE … … 84 87 !! - save the trend in (zwk3,zwk4) ('key_trddyn') 85 88 !!---------------------------------------------------------------------- 86 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released87 USE wrk_nemo, ONLY: zwk1 => wrk_3d_3 , zwk2 => wrk_3d_4 ! 3D workspace88 89 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 89 90 ! … … 91 92 ! 92 93 INTEGER :: ji, jj, jk ! dummy loop indices 94 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwk1, zwk2 93 95 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwk3, zwk4 94 96 !!---------------------------------------------------------------------- 95 96 IF( wrk_in_use(3, 3,4) ) THEN 97 CALL ctl_stop('dyn_ldf_bilapg: requested workspace arrays unavailable') ; RETURN 98 ENDIF 99 ! 97 ! 98 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf_bilapg') 99 ! 100 CALL wrk_alloc( jpi, jpj, jpk, zwk1, zwk2 ) 100 101 zwk3 => tsa(:,:,:,1) 101 102 zwk4 => tsa(:,:,:,2) … … 105 106 IF(lwp) WRITE(numout,*) 'dyn_ldf_bilapg : horizontal biharmonic operator in s-coordinate' 106 107 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~' 107 zwk1(:,:,:) = 0.e0 ; zwk3(:,:,:) = 0.e0108 zwk2(:,:,:) = 0.e0 ; zwk4(:,:,:) = 0.e0109 108 ! ! allocate dyn_ldf_bilapg arrays 110 109 IF( dyn_ldf_bilapg_alloc() /= 0 ) CALL ctl_stop('STOP', 'dyn_ldf_bilapg: failed to allocate arrays') 111 110 ENDIF 111 ! 112 zwk1(:,:,:) = 0.e0 ; zwk3(:,:,:) = 0.e0 113 zwk2(:,:,:) = 0.e0 ; zwk4(:,:,:) = 0.e0 112 114 113 115 ! Laplacian of (ub,vb) multiplied by ahm … … 133 135 END DO 134 136 ! 135 IF( wrk_not_released(3, 3,4) ) CALL ctl_stop('dyn_ldf_bilapg: failed to release workspace arrays') 137 CALL wrk_dealloc( jpi, jpj, jpk, zwk1, zwk2 ) 138 ! 139 IF( nn_timing == 1 ) CALL timing_stop('dyn_ldf_bilapg') 136 140 ! 137 141 END SUBROUTINE dyn_ldf_bilapg … … 179 183 !! 'key_trddyn' defined: the trend is saved for diagnostics. 180 184 !!---------------------------------------------------------------------- 181 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released182 USE wrk_nemo, ONLY: ziut => wrk_2d_1 , zjuf => wrk_2d_2 , zjvt => wrk_2d_3183 USE wrk_nemo, ONLY: zivf => wrk_2d_4 , zdku => wrk_2d_5 , zdk1u => wrk_2d_6184 USE wrk_nemo, ONLY: zdkv => wrk_2d_7 , zdk1v => wrk_2d_8185 185 !! 186 186 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in ) :: pu , pv ! 1st call: before horizontal velocity … … 196 196 REAL(wp) :: zbur, zbvr, zmkt, zmkf, zuav, zvav ! - - 197 197 REAL(wp) :: zuwslpi, zuwslpj, zvwslpi, zvwslpj ! - - 198 !!---------------------------------------------------------------------- 199 200 IF( wrk_in_use(2, 1,2,3,4,5,6,7,8) ) THEN 201 CALL ctl_stop('dyn:ldfguv: requested workspace arrays unavailable') ; RETURN 202 END IF 198 ! 199 REAL(wp), POINTER, DIMENSION(:,:) :: ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v 200 !!---------------------------------------------------------------------- 201 ! 202 IF( nn_timing == 1 ) CALL timing_start('ldfguv') 203 ! 204 CALL wrk_alloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v ) 205 ! 203 206 ! ! ********** ! ! =============== 204 207 DO jk = 1, jpkm1 ! First step ! ! Horizontal slab … … 456 459 ! ! =============== 457 460 458 IF( wrk_not_released(2, 1,2,3,4,5,6,7,8) ) CALL ctl_stop('dyn:ldfguv: failed to release workspace arrays') 461 CALL wrk_dealloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v ) 462 ! 463 IF( nn_timing == 1 ) CALL timing_stop('ldfguv') 459 464 ! 460 465 END SUBROUTINE ldfguv -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90
r2715 r3161 29 29 USE lib_mpp ! MPP library 30 30 USE prtctl ! Print control 31 USE wrk_nemo_2 ! Memory Allocation 32 USE timing ! Timing 31 33 32 34 IMPLICIT NONE … … 105 107 !! of the rotated operator in dynzdf module 106 108 !!---------------------------------------------------------------------- 107 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released108 USE wrk_nemo, ONLY: ziut => wrk_2d_1 , zjuf => wrk_2d_2 , zjvt => wrk_2d_3 ! 2D workspace109 USE wrk_nemo, ONLY: zivf => wrk_2d_4 , zdku => wrk_2d_5 , zdkv => wrk_2d_6 ! 2D workspace110 USE wrk_nemo, ONLY: zdk1u => wrk_2d_7 , zdk1v => wrk_2d_8111 109 ! 112 110 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 117 115 REAL(wp) :: zcoef0, zcoef3, zcoef4, zmkt, zmkf ! - - 118 116 REAL(wp) :: zuav, zvav, zuwslpi, zuwslpj, zvwslpi, zvwslpj ! - - 117 ! 118 REAL(wp), POINTER, DIMENSION(:,:) :: ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v 119 119 !!---------------------------------------------------------------------- 120 121 IF( wrk_in_use(2, 1,2,3,4,5,6,7,8) ) THEN122 CALL ctl_stop('dyn_ldf_iso: requested workspace arrays unavailable') ; RETURN123 END IF124 120 ! 121 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf_iso') 122 ! 123 CALL wrk_alloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v ) 124 ! 125 125 IF( kt == nit000 ) THEN 126 126 IF(lwp) WRITE(numout,*) … … 427 427 END DO ! End of slab 428 428 ! ! =============== 429 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') 429 CALL wrk_dealloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v ) 430 ! 431 IF( nn_timing == 1 ) CALL timing_stop('dyn_ldf_iso') 431 432 ! 432 433 END SUBROUTINE dyn_ldf_iso -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90
r2715 r3161 23 23 USE trdmod_oce ! ocean variables trends 24 24 USE ldfslp ! iso-neutral slopes 25 USE timing ! Timing 25 26 26 27 IMPLICIT NONE … … 68 69 !!---------------------------------------------------------------------- 69 70 ! 71 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf_lap') 72 ! 70 73 IF( kt == nit000 ) THEN 71 74 IF(lwp) WRITE(numout,*) … … 95 98 END DO ! End of slab 96 99 ! ! =============== 100 IF( nn_timing == 1 ) CALL timing_stop('dyn_ldf_lap') 101 ! 97 102 END SUBROUTINE dyn_ldf_lap 98 103 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynnept.F90
r3116 r3161 30 30 USE phycst 31 31 USE lbclnk 32 32 USE wrk_nemo_2 ! Memory Allocation 33 33 34 34 IMPLICIT NONE … … 102 102 USE iom 103 103 !! 104 !! Local dynamic allocation105 104 INTEGER :: ji, jj, jk ! dummy loop indices 106 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ht ! temporary 2D workspace107 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: htn ! temporary 2D workspace108 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: tscale ! temporary 2D workspace109 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: tsp ! temporary 2D workspace110 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: hur_n ! temporary 2D workspace111 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: hvr_n ! temporary 2D workspace112 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: hu_n ! temporary 2D workspace113 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: hv_n ! temporary 2D workspace114 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: znmask ! temporary 3D array for nmask115 105 REAL(wp) :: unemin,unemax,vnemin,vnemax ! extrema of (u*, v*) fields 116 106 REAL(wp) :: zhdivmin,zhdivmax ! extrema of horizontal divergence of (u*, v*) fields … … 118 108 REAL(wp) :: ustar,vstar ! (u*, v*) before tapering in shallow water 119 109 REAL(wp) :: hramp ! depth over which Neptune vel. is ramped down 120 !! 121 NAMELIST/namdyn_nept/ ln_neptsimp, & 122 ln_smooth_neptvel,& 123 rn_tslse, & 124 rn_tslsp, & 125 ln_neptramp, & 126 rn_htrmin, & 127 rn_htrmax 128 !!---------------------------------------------------------------------- 129 110 ! 111 REAL(wp), POINTER, DIMENSION(:,: ) :: ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n 112 REAL(wp), POINTER, DIMENSION(:,:,:) :: znmask 113 !! 114 NAMELIST/namdyn_nept/ ln_neptsimp, ln_smooth_neptvel, rn_tslse, rn_tslsp, & 115 ln_neptramp, rn_htrmin, rn_htrmax 116 !!---------------------------------------------------------------------- 117 ! ! Dynamically allocate local work arrays 118 CALL wrk_alloc( jpi, jpj , ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n ) 119 CALL wrk_alloc( jpi, jpj, jpk, znmask ) 120 ! 130 121 ! Define the (simplified) Neptune parameters 131 122 ! ========================================== … … 179 170 !! Perform dynamic allocation of shared module variables 180 171 IF( dynnept_alloc() /= 0 ) CALL ctl_warn('dynnept_alloc: array allocate failed.') 181 182 !! Dynamically allocate local work arrays183 ALLOCATE( ht(jpi,jpj), htn(jpi,jpj), tscale(jpi,jpj), tsp(jpi,jpj), &184 & hur_n(jpi,jpj), hvr_n(jpi,jpj), hu_n(jpi,jpj), hv_n(jpi,jpj), &185 & znmask(jpi,jpj,jpk) )186 172 187 173 IF( .not. ln_rstart ) THEN ! If restarting, these arrays are read from the restart file … … 350 336 !! Deallocate temporary workspace arrays, which are all local to 351 337 !! this routine, except where passed as arguments to other routines 352 DEALLOCATE( ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n, znmask ) 353 338 CALL wrk_dealloc( jpi, jpj , ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n ) 339 CALL wrk_dealloc( jpi, jpj, jpk, znmask ) 340 ! 354 341 END SUBROUTINE dyn_nept_init 355 342 … … 393 380 INTEGER :: ji, jj, jk ! dummy loop indices 394 381 !!---------------------------------------------------------------------- 395 396 382 ! 397 383 IF(lwp) WRITE(numout,*) 398 384 IF(lwp) WRITE(numout,*) 'dyn_nept_div_cur_init :' … … 501 487 ENDIF 502 488 ! 503 lastkt = kt! Store kt504 489 lastkt = kt ! Store kt 490 ! 505 491 ENDIF 506 492 ! … … 530 516 531 517 532 SUBROUTINE dyn_nept_smooth_vel( htold, htnew, option )518 SUBROUTINE dyn_nept_smooth_vel( htold, htnew, ld_option ) 533 519 534 520 !!---------------------------------------------------------------------- … … 539 525 !! ** Action : - Updates the array htnew (output) with a smoothed 540 526 !! version of the (input) array htold. Form of smoothing 541 !! algorithm is controlled by the (logical) argument option.542 !!---------------------------------------------------------------------- 543 544 INTEGER :: ji, jj ! dummy loop indices545 REAL(wp), DIMENSION(jpi,jpj), INTENT( IN) :: htold! temporary 2D workspace546 LOGICAL, INTENT(IN) :: option ! temporary 2D workspace547 REAL(wp), DIMENSION(jpi,jpj) :: htnew ! temporary 2D workspace548 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: work ! temporary 2D workspace549 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: nb! temporary 2D workspace550 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: iwork ! temporary 2D workspace551 552 !! Dynamically allocate local work arrays 553 ALLOCATE( work(jpi,jpj), nb(jpi,jpj), iwork(jpi,jpj) )554 527 !! algorithm is controlled by the (logical) argument ld_option. 528 !!---------------------------------------------------------------------- 529 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: htold ! temporary 2D workspace 530 LOGICAL , INTENT(in ) :: ld_option ! temporary 2D workspace 531 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: htnew ! temporary 2D workspace 532 ! 533 INTEGER :: ji, jj ! dummy loop indices 534 INTEGER , POINTER, DIMENSION(:,:) :: nb, iwork 535 REAL(wp), POINTER, DIMENSION(:,:) :: work ! temporary 2D workspace 536 !!---------------------------------------------------------------------- 537 ! 538 CALL wrk_alloc( jpi, jpj, nb, iwork ) 539 CALL wrk_alloc( jpi, jpj, work ) 540 ! 555 541 iwork(:,:) = 0 556 542 … … 565 551 !! htnew contains valid ocean depths from htold, or zero 566 552 567 !! set work to a smoothed/averaged version of htnew; choice controlled by option553 !! set work to a smoothed/averaged version of htnew; choice controlled by ld_option 568 554 !! nb is set to the sum of the weights of the valid values used in work 569 IF( option ) THEN555 IF( ld_option ) THEN 570 556 571 557 !! Apply scale-selective smoothing in determining work from htnew … … 615 601 END WHERE 616 602 617 !! Deallocate temporary workspace arrays, all local to this routine 618 DEALLOCATE( work, nb, iwork ) 619 603 !! Deallocate temporary workspace arrays, all local to this routine 604 CALL wrk_dealloc( jpi, jpj, nb, iwork ) 605 CALL wrk_dealloc( jpi, jpj, work ) 606 ! 620 607 END SUBROUTINE dyn_nept_smooth_vel 621 608 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r3116 r3161 44 44 USE agrif_opa_interp 45 45 #endif 46 USE timing ! Timing 46 47 47 48 IMPLICIT NONE … … 105 106 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze3u_f, ze3v_f 106 107 !!---------------------------------------------------------------------- 107 108 ! 109 IF( nn_timing == 1 ) CALL timing_start('dyn_nxt') 108 110 ! 109 111 ze3u_f => tsa(:,:,:,1) … … 279 281 & tab3d_2=vn, clinfo2=' Vn: ' , mask2=vmask ) 280 282 ! 283 IF( nn_timing == 1 ) CALL timing_stop('dyn_nxt') 284 ! 281 285 END SUBROUTINE dyn_nxt 282 286 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r3116 r3161 28 28 USE lib_mpp ! MPP library 29 29 USE solver ! solver initialization 30 USE wrk_nemo_2 ! Memory Allocation 31 USE timing ! Timing 32 30 33 31 34 IMPLICIT NONE … … 73 76 !! of the physical meaning of the results. 74 77 !!---------------------------------------------------------------------- 75 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released76 USE wrk_nemo, ONLY: ztrdu => wrk_3d_4 , ztrdv => wrk_3d_5 ! 3D workspace77 78 ! 78 79 INTEGER, INTENT(in ) :: kt ! ocean time-step index … … 81 82 INTEGER :: ji, jj, jk ! dummy loop indices 82 83 REAL(wp) :: z2dt, zg_2 ! temporary scalar 83 !!----------------------------------------------------------------------84 85 IF( wrk_in_use(3, 4,5) ) THEN86 CALL ctl_stop('dyn_spg: requested workspace arrays unavailable') ; RETURN87 ENDIF84 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 85 !!---------------------------------------------------------------------- 86 ! 87 IF( nn_timing == 1 ) CALL timing_start('dyn_spg') 88 ! 88 89 89 90 !!gm NOTA BENE : the dynspg_exp and dynspg_ts should be modified so that … … 93 94 94 95 IF( l_trddyn ) THEN ! temporary save of ta and sa trends 96 CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 95 97 ztrdu(:,:,:) = ua(:,:,:) 96 98 ztrdv(:,:,:) = va(:,:,:) … … 148 150 END SELECT 149 151 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_spg, 'DYN', kt ) 152 ! 153 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 150 154 ENDIF 151 155 ! ! print mean trends (used for debugging) … … 153 157 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 154 158 ! 155 IF( wrk_not_released(3, 4,5) ) CALL ctl_stop('dyn_spg: failed to release workspace arrays')159 IF( nn_timing == 1 ) CALL timing_stop('dyn_spg') 156 160 ! 157 161 END SUBROUTINE dyn_spg … … 167 171 INTEGER :: ioptio 168 172 !!---------------------------------------------------------------------- 169 173 ! 174 IF( nn_timing == 1 ) CALL timing_start('dyn_spg_init') 175 ! 170 176 IF(lwp) THEN ! Control print 171 177 WRITE(numout,*) … … 220 226 IF( .NOT.ln_dynadv_vec ) CALL ctl_stop( 'Flux form not implemented for this free surface formulation' ) 221 227 ENDIF 222 228 ! 229 IF( nn_timing == 1 ) CALL timing_stop('dyn_spg_init') 223 230 ! 224 231 END SUBROUTINE dyn_spg_init -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90
r3116 r3161 28 28 USE iom ! I/O library 29 29 USE restart ! only for lrst_oce 30 USE timing ! Timing 31 30 32 31 33 IMPLICIT NONE … … 65 67 INTEGER :: ji, jj, jk ! dummy loop indices 66 68 !!---------------------------------------------------------------------- 67 69 ! 70 IF( nn_timing == 1 ) CALL timing_start('dyn_spg_exp') 71 ! 68 72 IF( kt == nit000 ) THEN 69 73 IF(lwp) WRITE(numout,*) … … 100 104 ENDIF 101 105 ! 106 IF( nn_timing == 1 ) CALL timing_stop('dyn_spg_exp') 107 ! 102 108 END SUBROUTINE dyn_spg_exp 103 109 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90
r3116 r3161 49 49 USE agrif_opa_interp 50 50 #endif 51 USE timing ! Timing 51 52 52 53 IMPLICIT NONE … … 113 114 !!---------------------------------------------------------------------- 114 115 ! 116 IF( nn_timing == 1 ) CALL timing_start('dyn_spg_flt') 117 ! 115 118 zub => tsa(:,:,:,1) 116 119 zvb => tsa(:,:,:,2) … … 350 353 IF( lrst_oce ) CALL flt_rst( kt, 'WRITE' ) 351 354 ! 355 IF( nn_timing == 1 ) CALL timing_stop('dyn_spg_flt') 356 ! 352 357 END SUBROUTINE dyn_spg_flt 353 358 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r3156 r3161 42 42 USE iom ! IOM library 43 43 USE restart ! only for lrst_oce 44 USE zdf_oce 44 USE zdf_oce ! Vertical diffusion 45 USE wrk_nemo_2 ! Memory Allocation 46 USE timing ! Timing 47 45 48 46 49 IMPLICIT NONE … … 108 111 !! References : Griffies et al., (2003): A technical guide to MOM4. NOAA/GFDL 109 112 !!--------------------------------------------------------------------- 110 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released111 USE wrk_nemo, ONLY: zsshun_e => wrk_2d_1 , zsshb_e => wrk_2d_2 , zhdiv => wrk_2d_3112 USE wrk_nemo, ONLY: zsshvn_e => wrk_2d_4 , zssh_sum => wrk_2d_5113 USE wrk_nemo, ONLY: zcu => wrk_2d_6 , zwx => wrk_2d_7 , zua => wrk_2d_8 , zbfru => wrk_2d_9114 USE wrk_nemo, ONLY: zcv => wrk_2d_10 , zwy => wrk_2d_11 , zva => wrk_2d_12 , zbfrv => wrk_2d_13115 USE wrk_nemo, ONLY: zun => wrk_2d_14 , zun_e => wrk_2d_15 , zub_e => wrk_2d_16 , zu_sum => wrk_2d_17116 USE wrk_nemo, ONLY: zvn => wrk_2d_18 , zvn_e => wrk_2d_19 , zvb_e => wrk_2d_20 , zv_sum => wrk_2d_21117 113 ! 118 114 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 127 123 REAL(wp) :: zv_spg, zv_cor, zv_sld, zv_asp ! - - 128 124 REAL(wp) :: ua_btm, va_btm ! - - 125 ! 126 REAL(wp), POINTER, DIMENSION(:,:) :: zsshun_e, zsshvn_e, zsshb_e, zssh_sum, zhdiv 127 REAL(wp), POINTER, DIMENSION(:,:) :: zua, zva, zun, zvn, zun_e, zvn_e, zub_e, zvb_e 128 REAL(wp), POINTER, DIMENSION(:,:) :: zcu, zcv, zwx, zwy, zbfru, zbfrv, zu_sum, zv_sum 129 129 !!---------------------------------------------------------------------- 130 131 IF( wrk_in_use(2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, & 132 & 11,12,13,14,15,16,17,18,19,20,21 ) ) THEN 133 CALL ctl_stop( 'dyn_spg_ts: requested workspace arrays unavailable' ) ; RETURN 134 ENDIF 135 130 ! 131 IF( nn_timing == 1 ) CALL timing_start('dyn_spg_ts') 132 ! 133 CALL wrk_alloc( jpi, jpj, zsshun_e, zsshvn_e, zsshb_e, zssh_sum, zhdiv ) 134 CALL wrk_alloc( jpi, jpj, zua, zva, zun, zvn, zun_e, zvn_e, zub_e, zvb_e ) 135 CALL wrk_alloc( jpi, jpj, zcu, zcv, zwx, zwy, zbfru, zbfrv, zu_sum, zv_sum ) 136 ! 136 137 IF( kt == nit000 ) THEN !* initialisation 137 138 ! … … 680 681 IF( lrst_oce ) CALL ts_rst( kt, 'WRITE' ) 681 682 ! 682 ! 683 IF( wrk_not_released(2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, & 684 & 11,12,13,14,15,16,17,18,19,20,21) ) & 685 CALL ctl_stop('dyn_spg_ts: failed to release workspace arrays') 683 CALL wrk_dealloc( jpi, jpj, zsshun_e, zsshvn_e, zsshb_e, zssh_sum, zhdiv ) 684 CALL wrk_dealloc( jpi, jpj, zua, zva, zun, zvn, zun_e, zvn_e, zub_e, zvb_e ) 685 CALL wrk_dealloc( jpi, jpj, zcu, zcv, zwx, zwy, zbfru, zbfrv, zu_sum, zv_sum ) 686 ! 687 IF( nn_timing == 1 ) CALL timing_stop('dyn_spg_ts') 686 688 ! 687 689 END SUBROUTINE dyn_spg_ts -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r3111 r3161 34 34 USE prtctl ! Print control 35 35 USE in_out_manager ! I/O manager 36 USE lib_mpp 36 USE lib_mpp ! MPP library 37 USE wrk_nemo_2 ! Memory Allocation 38 USE timing ! Timing 39 37 40 38 41 IMPLICIT NONE … … 78 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 79 82 !!---------------------------------------------------------------------- 83 ! 84 IF( nn_timing == 1 ) CALL timing_start('dyn_vor') 80 85 ! 81 86 IF( l_trddyn ) THEN … … 183 188 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 184 189 ! 190 IF( nn_timing == 1 ) CALL timing_stop('dyn_vor') 191 ! 185 192 END SUBROUTINE dyn_vor 186 193 … … 212 219 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 213 220 !!---------------------------------------------------------------------- 214 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released215 USE wrk_nemo, ONLY: zwx => wrk_2d_1 , zwy => wrk_2d_2 , zwz => wrk_2d_3 ! 2D workspace216 221 ! 217 222 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 223 228 INTEGER :: ji, jj, jk ! dummy loop indices 224 229 REAL(wp) :: zx1, zy1, zfact2, zx2, zy2 ! local scalars 225 !!---------------------------------------------------------------------- 226 227 IF( wrk_in_use(2, 1,2,3) ) THEN 228 CALL ctl_stop('dyn:vor_ene: requested workspace arrays unavailable') ; RETURN 229 ENDIF 230 230 REAL(wp), POINTER, DIMENSION(:,:) :: zwx, zwy, zwz 231 !!---------------------------------------------------------------------- 232 ! 233 IF( nn_timing == 1 ) CALL timing_start('vor_ene') 234 ! 235 CALL wrk_alloc( jpi, jpj, zwx, zwy, zwz ) 236 ! 231 237 IF( kt == nit000 ) THEN 232 238 IF(lwp) WRITE(numout,*) … … 292 298 END DO ! End of slab 293 299 ! ! =============== 294 IF( wrk_not_released(2, 1,2,3) ) CALL ctl_stop('dyn:vor_ene: failed to release workspace arrays') 300 CALL wrk_dealloc( jpi, jpj, zwx, zwy, zwz ) 301 ! 302 IF( nn_timing == 1 ) CALL timing_stop('vor_ene') 295 303 ! 296 304 END SUBROUTINE vor_ene … … 328 336 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 329 337 !!---------------------------------------------------------------------- 330 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released331 USE wrk_nemo, ONLY: zwx => wrk_2d_4 , zwy => wrk_2d_5 , zwz => wrk_2d_6 , zww => wrk_2d_7 ! 2D workspace332 338 ! 333 339 INTEGER, INTENT(in) :: kt ! ocean timestep index … … 336 342 REAL(wp) :: zfact1, zua, zcua, zx1, zy1 ! local scalars 337 343 REAL(wp) :: zfact2, zva, zcva, zx2, zy2 ! - - 338 !!---------------------------------------------------------------------- 339 340 IF( wrk_in_use(2, 4,5,6,7) ) THEN 341 CALL ctl_stop('dyn:vor_mix: requested workspace arrays unavailable') ; RETURN 342 ENDIF 343 344 REAL(wp), POINTER, DIMENSION(:,:) :: zwx, zwy, zwz, zww 345 !!---------------------------------------------------------------------- 346 ! 347 IF( nn_timing == 1 ) CALL timing_start('vor_mix') 348 ! 349 CALL wrk_alloc( jpi, jpj, zwx, zwy, zwz, zww ) 350 ! 344 351 IF( kt == nit000 ) THEN 345 352 IF(lwp) WRITE(numout,*) … … 412 419 END DO ! End of slab 413 420 ! ! =============== 414 IF( wrk_not_released(2, 4,5,6,7) ) CALL ctl_stop('dyn:vor_mix: failed to release workspace arrays') 421 CALL wrk_dealloc( jpi, jpj, zwx, zwy, zwz, zww ) 422 ! 423 IF( nn_timing == 1 ) CALL timing_stop('vor_mix') 415 424 ! 416 425 END SUBROUTINE vor_mix … … 443 452 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. 444 453 !!---------------------------------------------------------------------- 445 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released446 USE wrk_nemo, ONLY: zwx => wrk_2d_4, zwy => wrk_2d_5, zwz => wrk_2d_6 ! 2D workspace447 454 ! 448 455 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 454 461 INTEGER :: ji, jj, jk ! dummy loop indices 455 462 REAL(wp) :: zfact1, zuav, zvau ! temporary scalars 456 !!---------------------------------------------------------------------- 457 458 IF( wrk_in_use(2, 4,5,6) ) THEN 459 CALL ctl_stop('dyn:vor_ens: requested workspace arrays unavailable') ; RETURN 460 END IF 461 463 REAL(wp), POINTER, DIMENSION(:,:) :: zwx, zwy, zwz, zww 464 !!---------------------------------------------------------------------- 465 ! 466 IF( nn_timing == 1 ) CALL timing_start('vor_ens') 467 ! 468 CALL wrk_alloc( jpi, jpj, zwx, zwy, zwz ) 469 ! 462 470 IF( kt == nit000 ) THEN 463 471 IF(lwp) WRITE(numout,*) … … 531 539 END DO ! End of slab 532 540 ! ! =============== 533 IF( wrk_not_released(2, 4,5,6) ) CALL ctl_stop('dyn:vor_ens: failed to release workspace arrays') 541 CALL wrk_dealloc( jpi, jpj, zwx, zwy, zwz ) 542 ! 543 IF( nn_timing == 1 ) CALL timing_stop('vor_ens') 534 544 ! 535 545 END SUBROUTINE vor_ens … … 555 565 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 556 566 !!---------------------------------------------------------------------- 557 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released558 USE wrk_nemo, ONLY: zwx => wrk_2d_1 , zwy => wrk_2d_2 , zwz => wrk_2d_3 ! 2D workspace559 USE wrk_nemo, ONLY: ztnw => wrk_2d_4 , ztne => wrk_2d_5560 USE wrk_nemo, ONLY: ztsw => wrk_2d_6 , ztse => wrk_2d_7561 #if defined key_vvl562 USE wrk_nemo, ONLY: ze3f => wrk_3d_1 ! 3D workspace (lk_vvl=T)563 #endif564 567 ! 565 568 INTEGER , INTENT(in ) :: kt ! ocean time-step index … … 569 572 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pva ! total v-trend 570 573 !! 571 INTEGER :: ji, jj, jk ! dummy loop indices 572 INTEGER :: ierr ! local integer 573 REAL(wp) :: zfac12, zua, zva ! local scalars 574 INTEGER :: ji, jj, jk ! dummy loop indices 575 INTEGER :: ierr ! local integer 576 REAL(wp) :: zfac12, zua, zva ! local scalars 577 ! ! 3D workspace 578 REAL(wp), POINTER , DIMENSION(:,: ) :: zwx, zwy, zwz 579 REAL(wp), POINTER , DIMENSION(:,: ) :: ztnw, ztne, ztsw, ztse 580 #if defined key_vvl 581 REAL(wp), POINTER , DIMENSION(:,:,:) :: ze3f ! 3D workspace (lk_vvl=T) 582 #endif 574 583 #if ! defined key_vvl 575 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE ::ze3f ! lk_vvl=F, ze3f=1/e3f saved one for all584 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: ze3f ! lk_vvl=F, ze3f=1/e3f saved one for all 576 585 #endif 577 586 !!---------------------------------------------------------------------- 578 579 IF( wrk_in_use(2, 1,2,3,4,5,6,7) .OR. wrk_in_use(3, 1) ) THEN 580 CALL ctl_stop('dyn:vor_een: requested workspace arrays unavailable') ; RETURN 581 ENDIF 582 587 ! 588 IF( nn_timing == 1 ) CALL timing_start('vor_een') 589 ! 590 CALL wrk_alloc( jpi, jpj, zwx , zwy , zwz ) 591 CALL wrk_alloc( jpi, jpj, ztnw, ztne, ztsw, ztse ) 592 #if defined key_vvl 593 CALL wrk_alloc( jpi, jpj, jpk, ze3f ) 594 #endif 595 ! 583 596 IF( kt == nit000 ) THEN 584 597 IF(lwp) WRITE(numout,*) … … 678 691 END DO ! End of slab 679 692 ! ! =============== 680 IF( wrk_not_released(2, 1,2,3,4,5,6,7) .OR. & 681 wrk_not_released(3, 1) ) CALL ctl_stop('dyn:vor_een: failed to release workspace arrays') 693 CALL wrk_dealloc( jpi, jpj, zwx , zwy , zwz ) 694 CALL wrk_dealloc( jpi, jpj, ztnw, ztne, ztsw, ztse ) 695 #if defined key_vvl 696 CALL wrk_dealloc( jpi, jpj, jpk, ze3f ) 697 #endif 698 ! 699 IF( nn_timing == 1 ) CALL timing_stop('vor_een') 682 700 ! 683 701 END SUBROUTINE vor_een … … 713 731 ! If energy, enstrophy or mixed advection of momentum in vector form change the value for masks 714 732 ! at angles with three ocean points and one land point 715 IF( ln_vorlat .AND. ( ln_dynvor_ene .OR. ln_dynvor_ens .OR. ln_dynvor_mix) ) THEN733 IF( ln_vorlat .AND. ( ln_dynvor_ene .OR. ln_dynvor_ens .OR. ln_dynvor_mix ) ) THEN 716 734 DO jk = 1, jpk 717 735 DO jj = 2, jpjm1 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90
r2977 r3161 21 21 USE lib_mpp ! MPP library 22 22 USE prtctl ! Print control 23 USE wrk_nemo_2 ! Memory Allocation 24 USE timing ! Timing 23 25 24 26 IMPLICIT NONE … … 53 55 !! - Save the trends in (ztrdu,ztrdv) ('key_trddyn') 54 56 !!---------------------------------------------------------------------- 55 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released56 USE wrk_nemo, ONLY: zww => wrk_2d_1 ! 2D workspace57 57 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 58 USE wrk_nemo, ONLY: ztrdu => wrk_3d_1 , ztrdv => wrk_3d_2 ! 3D workspace59 58 !! 60 59 INTEGER, INTENT(in) :: kt ! ocean time-step inedx … … 63 62 REAL(wp) :: zua, zva ! temporary scalars 64 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwuw , zwvw 64 REAL(wp), POINTER, DIMENSION(:,: ) :: zww 65 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 65 66 !!---------------------------------------------------------------------- 66 67 IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 1,2) ) THEN68 CALL ctl_stop('dyn_zad: requested workspace arrays unavailable') ; RETURN69 ENDIF67 ! 68 IF( nn_timing == 1 ) CALL timing_start('dyn_zad') 69 ! 70 CALL wrk_alloc( jpi, jpj, zww ) 70 71 ! 71 72 zwuw => tsa(:,:,:,1) … … 78 79 79 80 IF( l_trddyn ) THEN ! Save ua and va trends 81 CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 80 82 ztrdu(:,:,:) = ua(:,:,:) 81 83 ztrdv(:,:,:) = va(:,:,:) … … 121 123 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 122 124 CALL trd_mod(ztrdu, ztrdv, jpdyn_trd_zad, 'DYN', kt) 125 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 123 126 ENDIF 124 127 ! ! Control print … … 126 129 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 127 130 ! 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') 131 CALL wrk_dealloc( jpi, jpj, zww ) 132 ! 133 IF( nn_timing == 1 ) CALL timing_stop('dyn_zad') 130 134 ! 131 135 END SUBROUTINE dyn_zad -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90
r2715 r3161 25 25 USE lib_mpp ! MPP library 26 26 USE prtctl ! Print control 27 USE wrk_nemo_2 ! Memory Allocation 28 USE timing ! Timing 27 29 28 30 IMPLICIT NONE … … 53 55 !! ** Purpose : compute the vertical ocean dynamics physics. 54 56 !!--------------------------------------------------------------------- 55 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released56 USE wrk_nemo, ONLY: ztrdu => wrk_3d_1 , ztrdv => wrk_3d_2 ! 3D workspace57 57 !! 58 58 INTEGER, INTENT( in ) :: kt ! ocean time-step index 59 ! 60 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 59 61 !!--------------------------------------------------------------------- 60 61 IF( wrk_in_use(3, 1,2) ) THEN 62 CALL ctl_stop('dyn_zdf: requested workspace arrays unavailable') ; RETURN 63 END IF 62 ! 63 IF( nn_timing == 1 ) CALL timing_start('dyn_zdf') 64 ! 64 65 ! ! set time step 65 66 IF( neuler == 0 .AND. kt == nit000 ) THEN ; r2dt = rdt ! = rdtra (restart with Euler time stepping) … … 68 69 69 70 IF( l_trddyn ) THEN ! temporary save of ta and sa trends 71 CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 70 72 ztrdu(:,:,:) = ua(:,:,:) 71 73 ztrdv(:,:,:) = va(:,:,:) … … 90 92 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 91 93 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_zdf, 'DYN', kt ) 94 ! 95 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 92 96 ENDIF 93 97 ! ! print mean trends (used for debugging) … … 95 99 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 96 100 ! 97 IF( wrk_not_released(3, 1,2) ) CALL ctl_stop('dyn_zdf: failed to release workspace arrays')101 IF( nn_timing == 1 ) CALL timing_stop('dyn_zdf') 98 102 ! 99 103 END SUBROUTINE dyn_zdf -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_exp.F90
r2977 r3161 22 22 USE in_out_manager ! I/O manager 23 23 USE lib_mpp ! MPP library 24 USE wrk_nemo_2 ! Memory Allocation 25 USE timing ! Timing 26 24 27 25 28 IMPLICIT NONE … … 54 57 !! ** Action : - Update (ua,va) with the vertical diffusive trend 55 58 !!--------------------------------------------------------------------- 56 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released57 59 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 58 USE wrk_nemo, ONLY: zwz => wrk_3d_3 , zww => wrk_3d_4 ! 3D workspace59 60 ! 60 61 INTEGER , INTENT(in) :: kt ! ocean time-step index … … 64 65 REAL(wp) :: zrau0r, zlavmr, zua, zva ! local scalars 65 66 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwx, zwy 67 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwz, zww 66 68 !!---------------------------------------------------------------------- 67 68 IF( wrk_in_use(3, 3,4) ) THEN69 CALL ctl_stop('dyn_zdf_exp: requested workspace arrays unavailable') ; RETURN70 ENDIF69 ! 70 IF( nn_timing == 1 ) CALL timing_start('dyn_zdf_exp') 71 ! 72 CALL wrk_alloc( jpi, jpj, jpk, zwz, zww ) 71 73 ! 72 74 zwx => tsa(:,:,:,1) … … 124 126 END DO ! End of time splitting 125 127 ! 126 IF( wrk_not_released(3, 3,4) ) CALL ctl_stop('dyn_zdf_exp: failed to release workspace arrays') 128 CALL wrk_dealloc( jpi, jpj, jpk, zwz, zww ) 129 ! 130 IF( nn_timing == 1 ) CALL timing_stop('dyn_zdf_exp') 127 131 ! 128 132 END SUBROUTINE dyn_zdf_exp -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r3116 r3161 21 21 USE lib_mpp ! MPP library 22 22 USE zdfbfr ! bottom friction setup 23 USE wrk_nemo_2 ! Memory Allocation 24 USE timing ! Timing 23 25 24 26 IMPLICIT NONE … … 55 57 !! ** Action : - Update (ua,va) arrays with the after vertical diffusive mixing trend. 56 58 !!--------------------------------------------------------------------- 57 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 58 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 59 USE wrk_nemo, ONLY: zwi => wrk_3d_3 ! 3D workspace 60 !! 61 INTEGER , INTENT(in) :: kt ! ocean time-step index 59 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 60 !! 61 INTEGER , INTENT(in) :: kt ! ocean time-step index 62 62 REAL(wp), INTENT(in) :: p2dt ! vertical profile of tracer time-step 63 63 !! … … 69 69 REAL(wp) :: zbfru, zbfrv 70 70 REAL(wp) :: zbfr_imp = 0._wp ! toggle (SAVE'd by assignment) 71 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwi 71 72 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwd, zws 72 73 !!---------------------------------------------------------------------- 73 !!---------------------------------------------------------------------- 74 75 IF( wrk_in_use(3, 3) ) THEN 76 CALL ctl_stop('dyn_zdf_imp: requested workspace array unavailable') ; RETURN 77 END IF 74 ! 75 IF( nn_timing == 1 ) CALL timing_start('dyn_zdf_imp') 76 ! 77 CALL wrk_alloc( jpi, jpj, jpk, zwi ) 78 78 ! 79 79 zwd => tsa(:,:,:,1) … … 251 251 END DO 252 252 ! 253 IF( wrk_not_released(3, 3) ) CALL ctl_stop('dyn_zdf_imp: failed to release workspace array') 254 ! 255 253 CALL wrk_dealloc( jpi, jpj, jpk, zwi ) 254 ! 255 IF( nn_timing == 1 ) CALL timing_stop('dyn_zdf_imp') 256 ! 256 257 END SUBROUTINE dyn_zdf_imp 257 258 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/sshwzv.F90
r3116 r3161 39 39 USE asminc ! Assimilation increment 40 40 #endif 41 USE wrk_nemo_2 ! Memory Allocation 42 USE timing ! Timing 41 43 42 44 IMPLICIT NONE … … 75 77 !! Reference : Leclair, M., and G. Madec, 2009, Ocean Modelling. 76 78 !!---------------------------------------------------------------------- 77 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released78 79 USE oce , ONLY: tsa ! tsa used as 2 3D workspace 79 USE wrk_nemo, ONLY: zhdiv => wrk_2d_1, z2d => wrk_2d_280 80 !! 81 81 INTEGER, INTENT(in) :: kt ! time step … … 83 83 INTEGER :: ji, jj, jk ! dummy loop indices 84 84 REAL(wp) :: zcoefu, zcoefv, zcoeff, z2dt, z1_2dt, z1_rau0 ! local scalars 85 REAL(wp), POINTER, DIMENSION(:,: ) :: z2d, zhdiv 85 86 REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d 86 87 !!---------------------------------------------------------------------- 87 88 IF( wrk_in_use(2, 1,2) ) THEN89 CALL ctl_stop('ssh_wzv: requested workspace arrays unavailable') ; RETURN90 ENDIF91 88 ! 89 IF( nn_timing == 1 ) CALL timing_start('ssh_wzv') 90 ! 91 CALL wrk_alloc( jpi, jpj, z2d, zhdiv ) 92 ! 92 93 IF( kt == nit000 ) THEN 93 94 ! … … 242 243 IF(ln_ctl) CALL prt_ctl( tab2d_1=ssha, clinfo1=' ssha - : ', mask1=tmask, ovlap=1 ) 243 244 ! 244 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('ssh_wzv: failed to release workspace arrays') 245 CALL wrk_dealloc( jpi, jpj, z2d, zhdiv ) 246 ! 247 IF( nn_timing == 1 ) CALL timing_stop('ssh_wzv') 245 248 ! 246 249 END SUBROUTINE ssh_wzv … … 271 274 REAL(wp) :: zec ! temporary scalar 272 275 !!---------------------------------------------------------------------- 273 276 ! 277 IF( nn_timing == 1 ) CALL timing_start('ssh_nxt') 278 ! 274 279 IF( kt == nit000 ) THEN 275 280 IF(lwp) WRITE(numout,*) … … 356 361 IF(ln_ctl) CALL prt_ctl( tab2d_1=sshb, clinfo1=' sshb - : ', mask1=tmask, ovlap=1 ) 357 362 ! 363 IF( nn_timing == 1 ) CALL timing_stop('ssh_nxt') 364 ! 358 365 END SUBROUTINE ssh_nxt 359 366 -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r3139 r3161 56 56 USE phycst ! physical constant (par_cst routine) 57 57 USE trdmod ! momentum/tracers trends (trd_mod_init routine) 58 USE asminc ! assimilation increments (asm_inc_init routine)59 58 USE asmtrj ! writing out state trajectory 60 USE sshwzv ! vertical velocity used in asm61 59 USE diaptr ! poleward transports (dia_ptr_init routine) 62 60 USE diadct ! sections transports (dia_dct_init routine) … … 70 68 USE c1d ! 1D configuration 71 69 USE step_c1d ! Time stepping loop for the 1D configuration 72 USE dynnept ! simplified form of Neptune effect73 70 #if defined key_top 74 71 USE trcini ! passive tracer initialisation -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/step.F90
r3139 r3161 36 36 USE agrif_opa_sponge ! Momemtum and tracers sponges 37 37 #endif 38 USE asminc ! assimilation increments (tra_asm_inc, dyn_asm_inc routines)39 USE dynnept ! simplified form of Neptune effect40 38 41 39 IMPLICIT NONE -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r3139 r3161 45 45 USE dynspg_oce ! surface pressure gradient (dyn_spg routine) 46 46 USE dynspg ! surface pressure gradient (dyn_spg routine) 47 USE dynnept ! simp. form of Neptune effect(dyn_nept_cor routine) 48 47 49 USE dynnxt ! time-stepping (dyn_nxt routine) 48 50 … … 89 91 USE floats ! floats computation (flo_stp routine) 90 92 93 USE asminc ! assimilation increments (tra_asm_inc routine) 94 ! (dyn_asm_inc routine) 95 91 96 USE stpctl ! time stepping control (stp_ctl routine) 92 97 USE restart ! ocean restart (rst_wri routine)
Note: See TracChangeset
for help on using the changeset viewer.