- Timestamp:
- 2011-08-09T10:29:53+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/TOP_SRC/LOBSTER/trcsed.F90
r2715 r2819 57 57 !!--------------------------------------------------------------------- 58 58 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 59 USE wrk_nemo, ONLY: zwork => wrk_3d_2 60 USE wrk_nemo, ONLY: zw2d => wrk_2d_1 ! only used (if defined 61 ! key_diatrc && defined key_iomput) 59 USE wrk_nemo, ONLY: zw2d => wrk_2d_1, zwork => wrk_3d_2 62 60 !! 63 61 INTEGER, INTENT( in ) :: kt ! ocean time-step index 64 62 !! 65 INTEGER :: ji, jj, jk, jl 66 REAL(wp) :: ztra 67 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: 63 INTEGER :: ji, jj, jk, jl, ierr 64 REAL(wp) :: ztra, ze3t 65 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ztrbio 68 66 CHARACTER (len=25) :: charout 69 67 !!--------------------------------------------------------------------- 70 71 IF( ( wrk_in_use(3,2)) .OR. ( wrk_in_use(2,1)) ) THEN72 CALL ctl_stop('trc_sed : requested workspace arrays unavailable.')73 RETURN74 END IF75 68 76 69 IF( kt == nit000 ) THEN … … 80 73 ENDIF 81 74 75 IF( wrk_in_use(2, 1) .OR. wrk_in_use(3, 2) ) THEN 76 CALL ctl_stop('trc_sed : requested workspace arrays unavailable.') ; RETURN 77 END IF 78 79 IF( l_trdtrc ) THEN 80 ALLOCATE( ztrbio(jpi,jpj,jpk) , STAT = ierr ) ! temporary save of trends 81 IF( ierr > 0 ) THEN 82 CALL ctl_stop( 'trc_sed: unable to allocate ztrbio array' ) ; RETURN 83 ENDIF 84 ztrbio(:,:,:) = tra(:,:,:,jp_lob_det) 85 ENDIF 86 87 IF( ln_diatrc .AND. lk_iomput ) zw2d(:,:) = 0. 88 82 89 ! sedimentation of detritus : upstream scheme 83 90 ! -------------------------------------------- … … 86 93 zwork(:,:,1 ) = 0.e0 ! surface value set to zero 87 94 zwork(:,:,jpk) = 0.e0 ! bottom value set to zero 88 89 #if defined key_diatrc && defined key_iomput90 zw2d(:,:) = 0.91 # endif92 93 IF( l_trdtrc )THEN94 ALLOCATE( ztrbio(jpi,jpj,jpk) )95 ztrbio(:,:,:) = tra(:,:,:,jp_lob_det)96 ENDIF97 95 98 96 ! tracer flux at w-point: we use -vsed (downward flux) with simplification : no e1*e2 … … 104 102 DO jk = 1, jpkm1 105 103 DO jj = 1, jpj 106 DO ji = 1, jpi104 DO ji = 1, jpi 107 105 ztra = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 108 106 tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + ztra 109 #if defined key_diabio 110 trbio(ji,jj,jk,jp_lob0_trd + 7) = ztra 111 #endif 112 #if defined key_diatrc 113 # if ! defined key_iomput 114 trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ztra * fse3t(ji,jj,jk) * 86400. 115 # else 116 zw2d(ji,jj) = zw2d(ji,jj) + ztra * fse3t(ji,jj,jk) * 86400. 117 # endif 118 #endif 107 ! 108 IF( ln_diabio ) trbio(ji,jj,jk,jp_lob0_trd + 7) = ztra 109 IF( ln_diatrc ) THEN 110 ze3t = ztra * fse3t(ji,jj,jk) * 86400. 111 IF( lk_iomput ) THEN ; zw2d(ji,jj) = zw2d(ji,jj) + ze3t 112 ELSE ; trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ze3t 113 ENDIF 114 ENDIF 115 ! 119 116 END DO 120 117 END DO 121 118 END DO 122 119 123 #if defined key_diabio 124 jl = jp_lob0_trd + 7 125 CALL lbc_lnk (trbio(:,:,1,jl), 'T', 1. ) ! Lateral boundary conditions on trcbio 126 #endif 127 #if defined key_diatrc 128 # if ! defined key_iomput 129 jl = jp_lob0_2d + 7 130 CALL lbc_lnk( trc2d(:,:,jl), 'T', 1. ) ! Lateral boundary conditions on trc2d 131 # else 132 CALL lbc_lnk( zw2d(:,:), 'T', 1. ) ! Lateral boundary conditions on zw2d 133 CALL iom_put( "TDETSED", zw2d ) 134 # endif 135 #endif 136 ! 120 IF( ln_diatrc .AND. lk_iomput ) CALL iom_put( "TDETSED", zw2d ) 137 121 138 122 IF( l_trdtrc ) THEN … … 140 124 jl = jp_lob0_trd + 7 141 125 CALL trd_mod_trc( ztrbio, jl, kt ) ! handle the trend 126 DEALLOCATE( ztrbio ) 142 127 ENDIF 143 144 IF( l_trdtrc ) DEALLOCATE( ztrbio )145 128 146 129 IF(ln_ctl) THEN ! print mean trends (used for debugging) … … 150 133 ENDIF 151 134 152 IF( ( wrk_not_released( 3, 2) ) .OR. ( wrk_not_released(2, 1) ) ) &135 IF( ( wrk_not_released(2, 1) ) .OR. ( wrk_not_released(3, 2) ) ) & 153 136 & CALL ctl_stop('trc_sed : failed to release workspace arrays.') 154 137
Note: See TracChangeset
for help on using the changeset viewer.