- Timestamp:
- 2014-03-17T16:25:25+01:00 (10 years ago)
- Location:
- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r4525 r4532 87 87 END DO 88 88 ! 89 !90 89 CALL iom_put( "iceconc" , at_i ) ! ice concentration 91 90 ! 92 DO jj = 1, jpj ! mean ice thickness 93 DO ji = 1, jpi 94 z2d(ji,jj) = vt_i(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zind(ji,jj) 95 END DO 96 END DO 97 CALL iom_put( "icethic_cea" , z2d ) ! ice thickness (i.e. icethi(:,:)) 91 IF ( iom_use( "icethic_cea" ) ) THEN ! mean ice thickness 92 DO jj = 1, jpj 93 DO ji = 1, jpi 94 z2d(ji,jj) = vt_i(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zind(ji,jj) 95 END DO 96 END DO 97 CALL iom_put( "icethic_cea" , z2d ) 98 ENDIF 98 99 CALL iom_put( "icevolu" , vt_i ) ! ice volume = mean ice thickness over the cell 99 DO jj = 1, jpj 100 DO ji = 1, jpi 101 z2d(ji,jj) = vt_s(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zind(ji,jj) 102 END DO 103 END DO 104 CALL iom_put( "snowthic_cea" , z2d ) ! snow thickness = mean snow thickness over the cell 105 CALL iom_put( "ioceflxb" , fbif * at_i ) ! oceanic flux at the ice base 100 IF ( iom_use( "snowthic_cea" ) ) THEN ! snow thickness = mean snow thickness over the cell 101 DO jj = 1, jpj 102 DO ji = 1, jpi 103 z2d(ji,jj) = vt_s(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zind(ji,jj) 104 END DO 105 END DO 106 CALL iom_put( "snowthic_cea" , z2d ) 107 ENDIF 108 WRITE(numout,*) ' valore del iom_use snowthic_cea', iom_use( "snowthic_cea" ) 109 WRITE(numout,*) ' valore del iom_use icethic_cea', iom_use( "icethic_cea" ) 110 IF ( iom_use( "ioceflxb" ) ) THEN 111 CALL iom_put( "ioceflxb" , fbif * at_i ) ! oceanic flux at the ice base 112 ENDIF 106 113 CALL iom_put( "isst" , sst_m ) ! sea surface temperature 107 114 CALL iom_put( "isss" , sss_m ) ! sea surface salinity 108 CALL iom_put( "qt_oce" , qns + qsr ) ! total flux at ocean surface 115 IF ( iom_use( "qt_oce" ) ) THEN 116 CALL iom_put( "qt_oce" , qns + qsr ) ! total flux at ocean surface 117 ENDIF 109 118 ! 110 DO jj = 2 , jpjm1 111 DO ji = 2 , jpim1 112 z2da(ji,jj) = ( u_ice(ji,jj) * tmu(ji,jj) + u_ice(ji-1,jj) * tmu(ji-1,jj) ) * 0.5_wp 113 z2db(ji,jj) = ( v_ice(ji,jj) * tmv(ji,jj) + v_ice(ji,jj-1) * tmv(ji,jj-1) ) * 0.5_wp 114 END DO 115 END DO 116 CALL lbc_lnk( z2da, 'T', -1. ) 117 CALL lbc_lnk( z2db, 'T', -1. ) 118 DO jj = 1, jpj 119 DO ji = 1, jpi 120 z2d(ji,jj) = SQRT( z2da(ji,jj) * z2da(ji,jj) + z2db(ji,jj) * z2db(ji,jj) ) 121 END DO 122 END DO 123 CALL iom_put( "uice_ipa" , z2da ) ! ice velocity u component 124 CALL iom_put( "vice_ipa" , z2db ) ! ice velocity v component 125 CALL iom_put( "icevel" , z2d ) ! ice velocity module 126 CALL iom_put( "icebopr" , diag_bot_gr * rday ) ! daily bottom thermodynamic ice production 127 CALL iom_put( "icedypr" , diag_dyn_gr * rday ) ! daily dynamic ice production (rid/raft) 119 IF ( iom_use( "uice_ipa" ) .OR. iom_use( "vice_ipa" ) .OR. iom_use( "icevel" )) THEN 120 DO jj = 2 , jpjm1 121 DO ji = 2 , jpim1 122 z2da(ji,jj) = ( u_ice(ji,jj) * tmu(ji,jj) + u_ice(ji-1,jj) * tmu(ji-1,jj) ) * 0.5_wp 123 z2db(ji,jj) = ( v_ice(ji,jj) * tmv(ji,jj) + v_ice(ji,jj-1) * tmv(ji,jj-1) ) * 0.5_wp 124 END DO 125 END DO 126 CALL lbc_lnk( z2da, 'T', -1. ) 127 CALL lbc_lnk( z2db, 'T', -1. ) 128 CALL iom_put( "uice_ipa" , z2da ) ! ice velocity u component 129 CALL iom_put( "vice_ipa" , z2db ) ! ice velocity v component 130 DO jj = 1, jpj 131 DO ji = 1, jpi 132 z2d(ji,jj) = SQRT( z2da(ji,jj) * z2da(ji,jj) + z2db(ji,jj) * z2db(ji,jj) ) 133 END DO 134 END DO 135 CALL iom_put( "icevel" , z2d ) ! ice velocity module 136 ENDIF 137 IF ( iom_use( "icebopr" ) ) THEN 138 CALL iom_put( "icebopr" , diag_bot_gr * rday ) ! daily bottom thermodynamic ice production 139 ENDIF 140 IF ( iom_use( "icebopr" ) ) THEN 141 CALL iom_put( "icedypr" , diag_dyn_gr * rday ) ! daily dynamic ice production (rid/raft) 142 ENDIF 128 143 !!SF BE CAREFUL : qsr_oce qnd qns_oce are after penetration over ice 129 144 CALL iom_put( "qsr_oce" , qsr ) ! solar flux at ocean surface … … 151 166 CALL iom_put( "micesalt" , smt_i ) ! mean ice salinity 152 167 ! 153 z2d(:,:) = 0.e0 154 DO jl = 1, jpl 168 IF ( iom_use( "miceage" ) ) THEN 169 z2d(:,:) = 0.e0 170 DO jl = 1, jpl 171 DO jj = 1, jpj 172 DO ji = 1, jpi 173 z2d(ji,jj) = z2d(ji,jj) + zind(ji,jj) * oa_i(ji,jj,jl) 174 END DO 175 END DO 176 END DO 177 z1_365 = 1._wp / 365._wp 178 CALL iom_put( "miceage" , z2d * z1_365 ) ! mean ice age 179 ENDIF 180 IF ( iom_use( "icelapr" ) ) THEN 181 CALL iom_put( "icelapr" , diag_lat_gr * rday ) ! daily lateral thermodynamic ice production 182 ENDIF 183 IF ( iom_use( "icesipr" ) ) THEN 184 CALL iom_put( "icesipr" , diag_sni_gr * rday ) ! daily snowice ice production 185 ENDIF 186 IF ( iom_use( "micet" ) ) THEN 155 187 DO jj = 1, jpj 156 188 DO ji = 1, jpi 157 z2d(ji,jj) = z2d(ji,jj) + zind(ji,jj) * oa_i(ji,jj,jl) 158 END DO 159 END DO 160 END DO 161 z1_365 = 1._wp / 365._wp 162 CALL iom_put( "miceage" , z2d * z1_365 ) ! mean ice age 163 CALL iom_put( "icelapr" , diag_lat_gr * rday ) ! daily lateral thermodynamic ice production 164 CALL iom_put( "icesipr" , diag_sni_gr * rday ) ! daily snowice ice production 165 DO jj = 1, jpj 166 DO ji = 1, jpi 167 z2d(ji,jj) = ( tm_i(ji,jj) - rtt ) * zind(ji,jj) 168 END DO 169 END DO 170 171 CALL iom_put( "micet" , z2d ) ! mean ice temperature 189 z2d(ji,jj) = ( tm_i(ji,jj) - rtt ) * zind(ji,jj) 190 END DO 191 END DO 192 CALL iom_put( "micet" , z2d ) ! mean ice temperature 193 ENDIF 172 194 CALL iom_put( "icehc" , et_i ) ! ice total heat content 173 195 CALL iom_put( "isnowhc" , et_s ) ! snow total heat content 174 196 ! 175 z2d(:,:) = 0.e0 176 DO jl = 1, jpl 197 IF ( iom_use( "icest" ) ) THEN 198 z2d(:,:) = 0.e0 199 DO jl = 1, jpl 200 DO jj = 1, jpj 201 DO ji = 1, jpi 202 z2d(ji,jj) = z2d(ji,jj) + zind(ji,jj) * ( t_su(ji,jj,jl) - rtt ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi06 ) 203 END DO 204 END DO 205 END DO 206 CALL iom_put( "icest" , z2d ) ! ice surface temperature 207 ENDIF 208 IF ( iom_use( "sfxthd" ) ) THEN 209 CALL iom_put( "sfxthd" , sfx_thd * rday ) ! equivalent FW salt flux 210 ENDIF 211 IF ( iom_use( "ibrinv" ) ) THEN 212 CALL iom_put( "ibrinv" , bv_i * 100._wp ) ! brine volume 213 ENDIF 214 IF ( iom_use( "icecolf" ) ) THEN 177 215 DO jj = 1, jpj 178 216 DO ji = 1, jpi 179 z2d(ji,jj) = z2d(ji,jj) + zind(ji,jj) * ( t_su(ji,jj,jl) - rtt ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi06 ) 180 END DO 181 END DO 182 END DO 183 CALL iom_put( "icest" , z2d ) ! ice surface temperature 184 CALL iom_put( "sfxthd" , sfx_thd * rday ) ! equivalent FW salt flux 185 CALL iom_put( "ibrinv" , bv_i * 100._wp ) ! brine volume 186 DO jj = 1, jpj 187 DO ji = 1, jpi 188 zindb = MAX( zzero , SIGN( zone , at_i(ji,jj) ) ) 189 z2d(ji,jj) = hicol(ji,jj) * zindb 190 END DO 191 END DO 192 CALL iom_put( "icecolf" , z2d ) ! frazil ice collection thickness 193 CALL iom_put( "icestr" , strength * 0.001 ) ! ice strength 194 CALL iom_put( "isume" , diag_sur_me * rday ) ! surface melt 195 CALL iom_put( "ibome" , diag_bot_me * rday ) ! bottom melt 196 CALL iom_put( "idive" , divu_i * 1.0e8 ) ! divergence 197 CALL iom_put( "ishear" , shear_i * 1.0e8 ) ! shear 198 CALL iom_put( "isume" , diag_sur_me * rday ) ! surface melt 199 CALL iom_put( "icerepr" , diag_res_pr * rday ) ! daily prod./melting due to limupdate 217 zindb = MAX( zzero , SIGN( zone , at_i(ji,jj) ) ) 218 z2d(ji,jj) = hicol(ji,jj) * zindb 219 END DO 220 END DO 221 CALL iom_put( "icecolf" , z2d ) ! frazil ice collection thickness 222 ENDIF 223 IF ( iom_use( "icestr" ) ) THEN 224 CALL iom_put( "icestr" , strength * 0.001 ) ! ice strength 225 ENDIF 226 IF ( iom_use( "isume" ) ) THEN 227 CALL iom_put( "isume" , diag_sur_me * rday ) ! surface melt 228 ENDIF 229 IF ( iom_use( "ibome" ) ) THEN 230 CALL iom_put( "ibome" , diag_bot_me * rday ) ! bottom melt 231 ENDIF 232 IF ( iom_use( "idive" ) ) THEN 233 CALL iom_put( "idive" , divu_i * 1.0e8 ) ! divergence 234 ENDIF 235 IF ( iom_use( "ishear" ) ) THEN 236 CALL iom_put( "ishear" , shear_i * 1.0e8 ) ! shear 237 ENDIF 238 IF ( iom_use( "icerepr" ) ) THEN 239 CALL iom_put( "icerepr" , diag_res_pr * rday ) ! daily prod./melting due to limupdate 240 ENDIF 200 241 CALL iom_put( "snowvol" , vt_s ) ! snow volume 201 CALL iom_put( "sfxmec" , sfx_mec * rday ) ! salt flux from ridging rafting 202 CALL iom_put( "sfxres" , sfx_res * rday ) ! salt flux from limupdate (resultant) 203 CALL iom_put( "icetrp" , diag_trp_vi * rday ) ! ice volume transport 242 IF ( iom_use( "sfxmec" ) ) THEN 243 CALL iom_put( "sfxmec" , sfx_mec * rday ) ! salt flux from ridging rafting 244 ENDIF 245 IF ( iom_use( "sfxres" ) ) THEN 246 CALL iom_put( "sfxres" , sfx_res * rday ) ! salt flux from limupdate (resultant) 247 ENDIF 248 IF ( iom_use( "icetrp" ) ) THEN 249 CALL iom_put( "icetrp" , diag_trp_vi * rday ) ! ice volume transport 250 ENDIF 204 251 205 252 … … 208 255 !-------------------------------- 209 256 257 IF ( iom_use( "iceage_cat" ) ) THEN 210 258 DO jl = 1, jpl 211 259 CALL lbc_lnk( a_i(:,:,jl) , 'T' , 1. ) … … 226 274 227 275 CALL iom_put( "iceage_cat" , zoi ) ! ice age for categories 228 229 ! Compute brine volume 276 ENDIF 277 278 ! Compute brine volume 279 IF ( iom_use( "iceage_cat" ) ) THEN 230 280 zei(:,:,:) = 0._wp 231 281 DO jl = 1, jpl … … 245 295 CALL lbc_lnk( zei(:,:,jl) , 'T' , 1. ) 246 296 END DO 297 CALL iom_put( "brinevol_cat" , zei ) ! brine volume for categories 298 ENDIF 247 299 248 300 CALL iom_put( "iceconc_cat" , a_i ) ! area for categories … … 250 302 CALL iom_put( "snowthic_cat" , ht_s ) ! snow depth for categories 251 303 CALL iom_put( "salinity_cat" , sm_i ) ! salinity for categories 252 CALL iom_put( "brinevol_cat" , zei ) ! brine volume for categories253 304 254 305 ! ! Create an output files (output.lim.abort.nc) if S < 0 or u > 20 -
branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r4525 r4532 49 49 #endif 50 50 PUBLIC iom_init, iom_swap, iom_open, iom_close, iom_setkt, iom_varid, iom_get, iom_gettime, iom_rstput, iom_put 51 PUBLIC iom_getatt 51 PUBLIC iom_getatt, iom_use 52 52 53 53 PRIVATE iom_rp0d, iom_rp1d, iom_rp2d, iom_rp3d … … 1446 1446 1447 1447 #endif 1448 1449 LOGICAL FUNCTION iom_use( cdname ) 1450 CHARACTER(LEN=*), INTENT(in) :: cdname 1451 #if defined key_iomput 1452 iom_use = xios_field_is_active( cdname ) 1453 #else 1454 iom_use = .FALSE. 1455 #endif 1456 END FUNCTION iom_use 1448 1457 1449 1458 !!======================================================================
Note: See TracChangeset
for help on using the changeset viewer.