Changeset 4990 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
- Timestamp:
- 2014-12-15T17:42:49+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r4765 r4990 35 35 PUBLIC lim_wri_state ! called by dia_wri_state 36 36 37 REAL(wp) :: epsi06 = 1.e-6_wp38 37 !!---------------------------------------------------------------------- 39 38 !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) … … 59 58 INTEGER, INTENT(in) :: kindic ! if kindic < 0 there has been an error somewhere 60 59 ! 61 INTEGER :: ji, jj, jk, jl ! dummy loop indices 62 REAL(wp) :: zinda, zindb, z1_365 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: zoi, zei 64 REAL(wp), POINTER, DIMENSION(:,:) :: z2d, z2da, z2db, zind ! 2D workspace 60 INTEGER :: ji, jj, jk, jl ! dummy loop indices 61 REAL(wp) :: z1_365 62 REAL(wp) :: ztmp 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: zoi, zei 64 REAL(wp), POINTER, DIMENSION(:,:) :: z2d, z2da, z2db, zswi ! 2D workspace 65 65 !!------------------------------------------------------------------- 66 66 … … 68 68 69 69 CALL wrk_alloc( jpi, jpj, jpl, zoi, zei ) 70 CALL wrk_alloc( jpi, jpj , z2d, z2da, z2db, z ind)70 CALL wrk_alloc( jpi, jpj , z2d, z2da, z2db, zswi ) 71 71 72 72 !----------------------------- … … 80 80 DO jj = 1, jpj ! presence indicator of ice 81 81 DO ji = 1, jpi 82 z ind(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) )82 zswi(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) 83 83 END DO 84 84 END DO … … 89 89 DO jj = 1, jpj 90 90 DO ji = 1, jpi 91 z2d(ji,jj) = vt_i(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * z ind(ji,jj)91 z2d(ji,jj) = vt_i(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zswi(ji,jj) 92 92 END DO 93 93 END DO … … 98 98 DO jj = 1, jpj 99 99 DO ji = 1, jpi 100 z2d(ji,jj) = vt_s(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * z ind(ji,jj)100 z2d(ji,jj) = vt_s(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zswi(ji,jj) 101 101 END DO 102 102 END DO … … 128 128 DO jj = 1, jpj 129 129 DO ji = 1, jpi 130 z2d(ji,jj) = z2d(ji,jj) + z ind(ji,jj) * oa_i(ji,jj,jl)130 z2d(ji,jj) = z2d(ji,jj) + zswi(ji,jj) * oa_i(ji,jj,jl) 131 131 END DO 132 132 END DO … … 139 139 DO jj = 1, jpj 140 140 DO ji = 1, jpi 141 z2d(ji,jj) = ( tm_i(ji,jj) - rtt ) * z ind(ji,jj)141 z2d(ji,jj) = ( tm_i(ji,jj) - rtt ) * zswi(ji,jj) 142 142 END DO 143 143 END DO … … 150 150 DO jj = 1, jpj 151 151 DO ji = 1, jpi 152 z2d(ji,jj) = z2d(ji,jj) + z ind(ji,jj) * ( t_su(ji,jj,jl) - rtt ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi06 )152 z2d(ji,jj) = z2d(ji,jj) + zswi(ji,jj) * ( t_su(ji,jj,jl) - rtt ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi06 ) 153 153 END DO 154 154 END DO … … 160 160 DO jj = 1, jpj 161 161 DO ji = 1, jpi 162 zindb= MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) ) )163 z2d(ji,jj) = hicol(ji,jj) * zindb162 rswitch = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) ) ) 163 z2d(ji,jj) = hicol(ji,jj) * rswitch 164 164 END DO 165 165 END DO … … 199 199 CALL iom_put( "sfx" , sfx * rday ) ! total salt flux 200 200 201 CALL iom_put( "vfxres" , wfx_res * rday / rhoic ) ! daily prod./melting due to limupdate 202 CALL iom_put( "vfxopw" , wfx_opw * rday / rhoic ) ! daily lateral thermodynamic ice production 203 CALL iom_put( "vfxsni" , wfx_sni * rday / rhoic ) ! daily snowice ice production 204 CALL iom_put( "vfxbog" , wfx_bog * rday / rhoic ) ! daily bottom thermodynamic ice production 205 CALL iom_put( "vfxdyn" , wfx_dyn * rday / rhoic ) ! daily dynamic ice production (rid/raft) 206 CALL iom_put( "vfxsum" , wfx_sum * rday / rhoic ) ! surface melt 207 CALL iom_put( "vfxbom" , wfx_bom * rday / rhoic ) ! bottom melt 208 CALL iom_put( "vfxice" , wfx_ice * rday / rhoic ) ! total ice growth/melt 209 CALL iom_put( "vfxsnw" , wfx_snw * rday / rhoic ) ! total snw growth/melt 210 CALL iom_put( "vfxsub" , wfx_sub * rday / rhoic ) ! sublimation (snow) 211 CALL iom_put( "vfxspr" , wfx_spr * rday / rhoic ) ! precip (snow) 201 ztmp = rday / rhoic 202 CALL iom_put( "vfxres" , wfx_res * ztmp ) ! daily prod./melting due to limupdate 203 CALL iom_put( "vfxopw" , wfx_opw * ztmp ) ! daily lateral thermodynamic ice production 204 CALL iom_put( "vfxsni" , wfx_sni * ztmp ) ! daily snowice ice production 205 CALL iom_put( "vfxbog" , wfx_bog * ztmp ) ! daily bottom thermodynamic ice production 206 CALL iom_put( "vfxdyn" , wfx_dyn * ztmp ) ! daily dynamic ice production (rid/raft) 207 CALL iom_put( "vfxsum" , wfx_sum * ztmp ) ! surface melt 208 CALL iom_put( "vfxbom" , wfx_bom * ztmp ) ! bottom melt 209 CALL iom_put( "vfxice" , wfx_ice * ztmp ) ! total ice growth/melt 210 CALL iom_put( "vfxsnw" , wfx_snw * ztmp ) ! total snw growth/melt 211 CALL iom_put( "vfxsub" , wfx_sub * ztmp ) ! sublimation (snow) 212 CALL iom_put( "vfxspr" , wfx_spr * ztmp ) ! precip (snow) 212 213 213 214 CALL iom_put ('hfxthd', hfx_thd(:,:) ) ! … … 243 244 DO jj = 1, jpj 244 245 DO ji = 1, jpi 245 zinda= MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) )246 zoi(ji,jj,jl) = oa_i(ji,jj,jl) / MAX( a_i(ji,jj,jl) , epsi06 ) * zinda246 rswitch = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) ) 247 zoi(ji,jj,jl) = oa_i(ji,jj,jl) / MAX( a_i(ji,jj,jl) , epsi06 ) * rswitch 247 248 END DO 248 249 END DO … … 258 259 DO jj = 1, jpj 259 260 DO ji = 1, jpi 260 zinda= MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) )261 rswitch = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) ) 261 262 zei(ji,jj,jl) = zei(ji,jj,jl) + 100.0* & 262 263 ( - tmut * s_i(ji,jj,jk,jl) / MIN( ( t_i(ji,jj,jk,jl) - rtt ), - epsi06 ) ) * & 263 zinda/ nlay_i264 rswitch / nlay_i 264 265 END DO 265 266 END DO … … 274 275 275 276 CALL wrk_dealloc( jpi, jpj, jpl, zoi, zei ) 276 CALL wrk_dealloc( jpi, jpj , z2d, z ind, z2da, z2db )277 CALL wrk_dealloc( jpi, jpj , z2d, zswi, z2da, z2db ) 277 278 278 279 IF( nn_timing == 1 ) CALL timing_stop('limwri')
Note: See TracChangeset
for help on using the changeset viewer.