- Timestamp:
- 2011-02-26T11:28:03+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r2590 r2616 56 56 PUBLIC zdf_tke_init ! routine called in opa module 57 57 PUBLIC tke_rst ! routine called in step module 58 PUBLIC zdf_tke_alloc ! routine called in nemogcm module59 58 60 59 LOGICAL , PUBLIC, PARAMETER :: lk_zdftke = .TRUE. !: TKE vertical mixing flag 61 62 #if defined key_c1d63 ! !!** 1D cfg only ** ('key_c1d')64 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e_dis, e_mix !: dissipation and mixing turbulent lengh scales65 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e_pdl, e_ric !: prandl and local Richardson numbers66 #endif67 60 68 61 ! !!** Namelist namzdf_tke ** … … 88 81 REAL(wp) :: rhftau_scl = 1.0_wp ! scale factor applied to HF part of taum (nn_etau=3) 89 82 90 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:), PUBLIC :: en ! now turbulent kinetic energy [m2/s2] 91 92 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: htau ! depth of tke penetration (nn_htau) 93 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dissl ! now mixing lenght of dissipation 83 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: en !: now turbulent kinetic energy [m2/s2] 84 #if defined key_c1d 85 ! !!** 1D cfg only ** ('key_c1d') 86 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e_dis, e_mix !: dissipation and mixing turbulent lengh scales 87 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e_pdl, e_ric !: prandl and local Richardson numbers 88 #endif 89 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: htau ! depth of tke penetration (nn_htau) 90 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: dissl ! now mixing lenght of dissipation 94 91 95 92 !! * Substitutions … … 97 94 # include "vectopt_loop_substitute.h90" 98 95 !!---------------------------------------------------------------------- 99 !! NEMO/OPA 3.3 , NEMO Consortium (2010)96 !! NEMO/OPA 4.0 , NEMO Consortium (2011) 100 97 !! $Id$ 101 98 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 103 100 CONTAINS 104 101 105 FUNCTION zdf_tke_alloc() 106 !!---------------------------------------------------------------------- 107 !! *** ROUTINE zdf_tke_alloc *** 108 !!---------------------------------------------------------------------- 109 IMPLICIT none 110 INTEGER :: zdf_tke_alloc 111 !!---------------------------------------------------------------------- 112 113 ALLOCATE( & 102 INTEGER FUNCTION zdf_tke_alloc() 103 !!---------------------------------------------------------------------- 104 !! *** FUNCTION zdf_tke_alloc *** 105 !!---------------------------------------------------------------------- 106 ALLOCATE( & 114 107 #if defined key_c1d 115 e_dis(jpi,jpj,jpk), e_mix(jpi,jpj,jpk),&116 e_pdl(jpi,jpj,jpk), e_ric(jpi,jpj,jpk),&108 & e_dis(jpi,jpj,jpk) , e_mix(jpi,jpj,jpk) , & 109 & e_pdl(jpi,jpj,jpk) , e_ric(jpi,jpj,jpk) , & 117 110 #endif 118 en(jpi,jpj,jpk), htau(jpi,jpj), dissl(jpi,jpj,jpk), & 119 Stat=zdf_tke_alloc) 120 121 IF(zdf_tke_alloc /= 0)THEN 122 CALL ctl_warn('zdf_tke_alloc: failed to allocate arrays.') 123 END IF 124 111 & en (jpi,jpj,jpk) , htau (jpi,jpj) , dissl(jpi,jpj,jpk) , STAT=zdf_tke_alloc ) 112 ! 113 IF( lk_mpp ) CALL mpp_sum ( zdf_tke_alloc ) 114 IF( zdf_tke_alloc /= 0 ) CALL ctl_warn('zdf_tke_alloc: failed to allocate arrays') 115 ! 125 116 END FUNCTION zdf_tke_alloc 126 117 … … 220 211 !!-------------------------------------------------------------------- 221 212 ! 222 IF( (.NOT. iwrk_use(2,1)) .OR. & 223 (.NOT. wrk_use(2, 1)) .OR. & 224 (.NOT. wrk_use(3, 1)) )THEN 225 CALL ctl_stop('tke_tke : requested workspace arrays unavailable.') 226 RETURN 213 IF( .NOT. iwrk_use(2, 1) .OR. & 214 .NOT. wrk_use(2, 1) .OR. & 215 .NOT. wrk_use(3, 1) )THEN 216 CALL ctl_stop('tke_tke : requested workspace arrays unavailable.') ; RETURN 227 217 END IF 228 218 … … 438 428 END DO 439 429 ENDIF 440 !441 430 CALL lbc_lnk( en, 'W', 1. ) ! Lateral boundary conditions (sign unchanged) 442 431 ! 443 IF( (.NOT. iwrk_release(2,1)) .OR. & 444 (.NOT. wrk_release(2, 1)) .OR. & 445 (.NOT. wrk_release(3, 1)) )THEN 446 CALL ctl_stop('tke_tke : failed to release workspace arrays.') 447 END IF 432 IF( .NOT. iwrk_release(2 ,1) .OR. & 433 .NOT. wrk_release(2, 1) .OR. & 434 .NOT. wrk_release(3, 1) ) CALL ctl_stop( 'tke_tke : failed to release workspace arrays' ) 448 435 ! 449 436 END SUBROUTINE tke_tke … … 724 711 WRITE(numout,*) ' critical Richardson nb with your parameters ri_cri = ', ri_cri 725 712 ENDIF 713 714 ! ! allocate tke arrays 715 IF( zdf_tke_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'zdf_tke_init : unable to allocate arrays' ) 726 716 727 717 ! !* Check of some namelist values
Note: See TracChangeset
for help on using the changeset viewer.