- Timestamp:
- 2010-11-29T08:52:36+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/TRA/trabbc.F90
r2337 r2443 8 8 !! - ! 2002-11 (A. Bozec) tra_bbc_init: original code 9 9 !! 3.3 ! 2010-10 (G. Madec) dynamical allocation + suppression of key_trabbc 10 !! - ! 2010-11 (G. Madec) use mbkt array (deepest ocean t-level) 10 11 !!---------------------------------------------------------------------- 11 12 13 !!---------------------------------------------------------------------- 12 14 !! tra_bbc : update the tracer trend at ocean bottom 13 15 !! tra_bbc_init : initialization of geothermal heat flux trend 14 16 !!---------------------------------------------------------------------- 15 USE oce ! ocean dynamics and active tracers16 USE dom_oce ! ocean space and time domain17 USE oce ! ocean variables 18 USE dom_oce ! domain: ocean 17 19 USE phycst ! physical constants 18 USE trdmod_oce ! ocean trends19 USE trdtra ! ocean trends20 USE trdmod_oce ! trends: ocean variables 21 USE trdtra ! trends: active tracers 20 22 USE in_out_manager ! I/O manager 21 23 USE prtctl ! Print control … … 32 34 REAL(wp) :: rn_geoflx_cst = 86.4e-3_wp ! Constant value of geothermal heat flux 33 35 34 INTEGER , DIMENSION(:,:), ALLOCATABLE :: nbotlevt ! ocean bottom level index at T-pt35 36 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: qgh_trd0 ! geothermal heating trend 36 37 … … 57 58 !! ocean bottom can be computed once and is added to the temperature 58 59 !! trend juste above the bottom at each time step: 59 !! ta = ta + Qsf / (rau0 rcp e3T) for k= mb athy -160 !! ta = ta + Qsf / (rau0 rcp e3T) for k= mbkt 60 61 !! Where Qsf is the geothermal heat flux. 61 62 !! … … 66 67 !! Emile-Geay and Madec, 2009, Ocean Science. 67 68 !!---------------------------------------------------------------------- 68 !!69 69 INTEGER, INTENT( in ) :: kt ! ocean time-step index 70 70 !! 71 71 INTEGER :: ji, jj, ik ! dummy loop indices 72 REAL(wp) :: zqgh_trd ! geothermal heat flux trend72 REAL(wp) :: zqgh_trd ! geothermal heat flux trend 73 73 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt 74 74 !!---------------------------------------------------------------------- 75 75 ! 76 76 IF( l_trdtra ) THEN ! Save ta and sa trends 77 77 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 78 78 ENDIF 79 79 ! 80 80 ! ! Add the geothermal heat flux trend on temperature 81 81 #if defined key_vectopt_loop … … 86 86 DO ji = 2, jpim1 87 87 #endif 88 ik = nbotlevt(ji,jj)88 ik = mbkt(ji,jj) 89 89 zqgh_trd = qgh_trd0(ji,jj) / fse3t(ji,jj,ik) 90 90 tsa(ji,jj,ik,jp_tem) = tsa(ji,jj,ik,jp_tem) + zqgh_trd 91 91 END DO 92 92 END DO 93 93 ! 94 94 IF( l_trdtra ) THEN ! Save the geothermal heat flux trend for diagnostics 95 95 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) … … 117 117 !! 118 118 !! ** Action : - read/fix the geothermal heat qgh_trd0 119 !! - compute the bottom ocean level nbotlevt120 119 !!---------------------------------------------------------------------- 121 120 USE iom … … 127 126 !!---------------------------------------------------------------------- 128 127 129 REWIND ( numnam )! Read Namelist nambbc : bottom momentum boundary condition130 READ 128 REWIND( numnam ) ! Read Namelist nambbc : bottom momentum boundary condition 129 READ ( numnam, nambbc ) 131 130 132 131 IF(lwp) THEN ! Control print … … 143 142 IF( ln_trabbc ) THEN !== geothermal heating ==! 144 143 ! 145 ALLOCATE( nbotlevt(jpi,jpj) ) ! allocation 146 ALLOCATE( qgh_trd0(jpi,jpj) ) 147 ! 148 DO jj = 1, jpj ! level of the ocean bottom at T-point 149 DO ji = 1, jpi 150 nbotlevt(ji,jj) = MAX( mbathy(ji,jj)-1, 1 ) 151 END DO 152 END DO 144 ALLOCATE( qgh_trd0(jpi,jpj) ) ! allocation 153 145 ! 154 146 SELECT CASE ( nn_geoflx ) ! geothermal heat flux / (rauO * Cp) … … 172 164 ! 173 165 ELSE 174 166 IF(lwp) WRITE(numout,*) ' *** no geothermal heat flux' 175 167 ENDIF 176 168 !
Note: See TracChangeset
for help on using the changeset viewer.