Changeset 3294 for trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90
r2715 r3294 29 29 USE restart ! ocean restart 30 30 USE lib_mpp ! MPP library 31 USE wrk_nemo ! Memory Allocation 32 USE timing ! Timing 33 31 34 32 35 IMPLICIT NONE … … 90 93 !! Lengaigne et al. 2007, Clim. Dyn., V28, 5, 503-516. 91 94 !!---------------------------------------------------------------------- 92 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released93 USE wrk_nemo, ONLY: zekb => wrk_2d_1 , zekg => wrk_2d_2 , zekr => wrk_2d_394 USE wrk_nemo, ONLY: ze0 => wrk_3d_1 , ze1 => wrk_3d_2 , ze2 => wrk_3d_395 USE wrk_nemo, ONLY: ze3 => wrk_3d_4 , zea => wrk_3d_596 95 ! 97 96 INTEGER, INTENT(in) :: kt ! ocean time-step … … 102 101 REAL(wp) :: zc0, zc1, zc2, zc3 ! - - 103 102 REAL(wp) :: zz0, zz1, z1_e3t ! - - 104 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrdt 103 REAL(wp), POINTER, DIMENSION(:,: ) :: zekb, zekg, zekr 104 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea, ztrdt 105 105 !!---------------------------------------------------------------------- 106 107 IF( wrk_in_use(3, 1,2,3,4,5) .OR. wrk_in_use(2, 1,2,3) )THEN 108 CALL ctl_stop('tra_qsr: requested workspace arrays unavailable') ; RETURN 109 ENDIF 110 106 ! 107 IF( nn_timing == 1 ) CALL timing_start('tra_qsr') 108 ! 109 CALL wrk_alloc( jpi, jpj, zekb, zekg, zekr ) 110 CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 111 ! 111 112 IF( kt == nit000 ) THEN 112 113 IF(lwp) WRITE(numout,*) … … 117 118 118 119 IF( l_trdtra ) THEN ! Save ta and sa trends 119 ALLOCATE( ztrdt(jpi,jpj,jpk) ) ; ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 120 CALL wrk_alloc( jpi, jpj, jpk, ztrdt ) 121 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) 120 122 ENDIF 121 123 … … 237 239 zz1 = ( 1. - rn_abs ) * ro0cpr 238 240 DO jk = 1, nksr ! solar heat absorbed at T-point in the top 400m 239 DO jj = 2, jpjm1240 DO ji = 2, jpim1241 DO jj = 1, jpj 242 DO ji = 1, jpi 241 243 zc0 = zz0 * EXP( -fsdepw(ji,jj,jk )*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk )*xsi1r ) 242 244 zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r ) … … 283 285 ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:) 284 286 CALL trd_tra( kt, 'TRA', jp_tem, jptra_trd_qsr, ztrdt ) 285 DEALLOCATE( ztrdt )287 CALL wrk_dealloc( jpi, jpj, jpk, ztrdt ) 286 288 ENDIF 287 289 ! ! print mean trends (used for debugging) 288 290 IF(ln_ctl) CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' qsr - Ta: ', mask1=tmask, clinfo3='tra-ta' ) 289 291 ! 290 IF( wrk_not_released(3, 1,2,3,4,5) .OR. & 291 wrk_not_released(2, 1,2,3) ) CALL ctl_stop('tra_qsr: failed to release workspace arrays') 292 CALL wrk_dealloc( jpi, jpj, zekb, zekg, zekr ) 293 CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 294 ! 295 IF( nn_timing == 1 ) CALL timing_stop('tra_qsr') 292 296 ! 293 297 END SUBROUTINE tra_qsr … … 311 315 !! Reference : Jerlov, N. G., 1968 Optical Oceanography, Elsevier, 194pp. 312 316 !!---------------------------------------------------------------------- 313 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released314 USE wrk_nemo, ONLY: zekb => wrk_2d_1 , zekg => wrk_2d_2 , zekr => wrk_2d_3315 USE wrk_nemo, ONLY: ze0 => wrk_3d_1 , ze1 => wrk_3d_2 , ze2 => wrk_3d_3316 USE wrk_nemo, ONLY: ze3 => wrk_3d_4 , zea => wrk_3d_5317 317 ! 318 318 INTEGER :: ji, jj, jk ! dummy loop indices … … 320 320 REAL(wp) :: zz0, zc0 , zc1, zcoef ! local scalars 321 321 REAL(wp) :: zz1, zc2 , zc3, zchl ! - - 322 REAL(wp), POINTER, DIMENSION(:,: ) :: zekb, zekg, zekr 323 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze0, ze1, ze2, ze3, zea 322 324 ! 323 325 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files … … 328 330 !!---------------------------------------------------------------------- 329 331 330 IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use(3, 1,2,3,4,5) )THEN 331 CALL ctl_stop('tra_qsr_init: requested workspace arrays unavailable') ; RETURN 332 ENDIF 332 ! 333 IF( nn_timing == 1 ) CALL timing_start('tra_qsr_init') 334 ! 335 CALL wrk_alloc( jpi, jpj, zekb, zekg, zekr ) 336 CALL wrk_alloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 337 ! 333 338 334 339 cn_dir = './' ! directory in which the model is executed … … 504 509 ENDIF 505 510 ! 506 IF( wrk_not_released(2, 1,2,3) .OR. & 507 wrk_not_released(3, 1,2,3,4,5) ) CALL ctl_stop('tra_qsr_init: failed to release workspace arrays') 511 CALL wrk_dealloc( jpi, jpj, zekb, zekg, zekr ) 512 CALL wrk_dealloc( jpi, jpj, jpk, ze0, ze1, ze2, ze3, zea ) 513 ! 514 IF( nn_timing == 1 ) CALL timing_stop('tra_qsr_init') 508 515 ! 509 516 END SUBROUTINE tra_qsr_init
Note: See TracChangeset
for help on using the changeset viewer.