- Timestamp:
- 2017-09-25T21:11:19+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icewri.F90
r8534 r8562 40 40 CONTAINS 41 41 42 SUBROUTINE ice_wri( k indic)42 SUBROUTINE ice_wri( kt ) 43 43 !!------------------------------------------------------------------- 44 44 !! This routine computes the average of some variables and write it … … 50 50 !! modif : 03/06/98 51 51 !!------------------------------------------------------------------- 52 INTEGER, INTENT(in) :: k indic ! if kindic < 0 there has been an error somewhere52 INTEGER, INTENT(in) :: kt ! time-step 53 53 ! 54 54 INTEGER :: ji, jj, jk, jl ! dummy loop indices 55 REAL(wp) :: z2da, z2db, z tmp, zrho1, zrho2, zmiss_val55 REAL(wp) :: z2da, z2db, zrho1, zrho2, zmiss_val 56 56 REAL(wp), DIMENSION(jpi,jpj) :: z2d, zswi, zmiss ! 2D workspace 57 57 REAL(wp), DIMENSION(jpi,jpj) :: zfb ! ice freeboard … … 95 95 ! Standard outputs 96 96 !---------------------------------------- 97 ! fluxes98 IF( iom_use('qsr_oce') ) CALL iom_put( "qsr_oce" , qsr_oce(:,:) * ( 1._wp - at_i_b(:,:) ) ) ! solar flux at ocean surface99 IF( iom_use('qns_oce') ) CALL iom_put( "qns_oce" , qns_oce(:,:) * ( 1._wp - at_i_b(:,:) ) + qemp_oce(:,:) ) ! non-solar flux at ocean surface100 IF( iom_use('qsr_ice') ) CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) ! solar flux at ice surface101 IF( iom_use('qns_ice') ) CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) ) ! non-solar flux at ice surface102 IF( iom_use('qtr_ice') ) CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) ! solar flux transmitted thru ice103 IF( iom_use('qt_oce' ) ) CALL iom_put( "qt_oce" , ( qsr_oce(:,:) + qns_oce(:,:) ) * ( 1._wp - at_i_b(:,:) ) + qemp_oce(:,:) )104 IF( iom_use('qt_ice' ) ) CALL iom_put( "qt_ice" , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) &105 & * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) )106 !!gm I don't understand the variable below.... why not multiplied by a_i_b or (1-a_i_b) ???107 IF( iom_use('qemp_oce') ) CALL iom_put( "qemp_oce" , qemp_oce(:,:) )108 IF( iom_use('qemp_ice') ) CALL iom_put( "qemp_ice" , qemp_ice(:,:) )109 IF( iom_use('emp_oce' ) ) CALL iom_put( "emp_oce" , emp_oce (:,:) ) ! emp over ocean (taking into account the snow blown away from the ice)110 IF( iom_use('emp_ice' ) ) CALL iom_put( "emp_ice" , emp_ice (:,:) ) ! emp over ice (taking into account the snow blown away from the ice)111 112 97 ! velocity 113 98 IF( iom_use('uice_ipa') ) CALL iom_put( "uice_ipa" , u_ice ) ! ice velocity u component … … 126 111 IF( iom_use('icevel_mv') ) CALL iom_put( "icevel_mv" , z2d(:,:) * zswi(:,:) + zmiss(:,:) ) ! ice velocity module (missing value) 127 112 ENDIF 128 129 IF( iom_use('tau_icebfr') ) CALL iom_put( "tau_icebfr" , tau_icebfr ) ! ice friction with ocean bottom (landfast ice)130 113 ! 131 114 IF( iom_use('miceage') ) CALL iom_put( "miceage" , om_i * zswi * zamask15 ) ! mean ice age 132 115 IF( iom_use('micet') ) CALL iom_put( "micet" , ( tm_i - rt0 ) * zswi ) ! ice mean temperature 133 116 IF( iom_use('icest') ) CALL iom_put( "icest" , ( tm_su - rt0 ) * zswi ) ! ice surface temperature 134 IF( iom_use('icecolf') ) CALL iom_put( "icecolf" , h icol ) ! frazil ice collection thickness117 IF( iom_use('icecolf') ) CALL iom_put( "icecolf" , ht_i_new ) ! new ice thickness formed in the leads 135 118 ! 136 119 CALL iom_put( "isst" , sst_m ) ! sea surface temperature … … 142 125 CALL iom_put( "isnowhc" , et_s * zswi ) ! snow total heat content 143 126 CALL iom_put( "ibrinv" , bvm_i * zswi * 100. ) ! brine volume 144 CALL iom_put( "snowpre" , sprecip * 86400. ) ! snow precipitation [m/day]145 127 CALL iom_put( "micesalt" , smt_i * zswi ) ! mean ice salinity 146 128 CALL iom_put( "snowvol" , vt_s * zswi ) ! snow volume 147 129 148 CALL iom_put( "sfxbog" , sfx_bog * rday ) ! salt flux from bottom growth149 CALL iom_put( "sfxbom" , sfx_bom * rday ) ! salt flux from bottom melting150 CALL iom_put( "sfxsum" , sfx_sum * rday ) ! salt flux from surface melting151 CALL iom_put( "sfxlam" , sfx_lam * rday ) ! salt flux from lateral melting152 CALL iom_put( "sfxsni" , sfx_sni * rday ) ! salt flux from snow ice formation153 CALL iom_put( "sfxopw" , sfx_opw * rday ) ! salt flux from open water formation154 CALL iom_put( "sfxdyn" , sfx_dyn * rday ) ! salt flux from ridging rafting155 CALL iom_put( "sfxres" , sfx_res * rday ) ! salt flux from corrections (resultant)156 CALL iom_put( "sfxbri" , sfx_bri * rday ) ! salt flux from brines157 CALL iom_put( "sfxsub" , sfx_sub * rday ) ! salt flux from sublimation158 CALL iom_put( "sfx" , sfx * rday ) ! total salt flux159 160 ztmp = rday / rhoic161 CALL iom_put( "vfxres" , wfx_res * ztmp ) ! daily prod./melting due to corrections162 CALL iom_put( "vfxopw" , wfx_opw * ztmp ) ! daily lateral thermodynamic ice production163 CALL iom_put( "vfxsni" , wfx_sni * ztmp ) ! daily snowice ice production164 CALL iom_put( "vfxbog" , wfx_bog * ztmp ) ! daily bottom thermodynamic ice production165 CALL iom_put( "vfxdyn" , wfx_dyn * ztmp ) ! daily dynamic ice production (rid/raft)166 CALL iom_put( "vfxsum" , wfx_sum * ztmp ) ! surface melt167 CALL iom_put( "vfxbom" , wfx_bom * ztmp ) ! bottom melt168 CALL iom_put( "vfxlam" , wfx_lam * ztmp ) ! lateral melt169 CALL iom_put( "vfxice" , wfx_ice * ztmp ) ! total ice growth/melt170 171 IF ( ln_pnd ) &172 CALL iom_put( "vfxpnd" , wfx_pnd * ztmp ) ! melt pond water flux173 174 IF ( iom_use( "vfxthin" ) ) THEN ! ice production for open water + thin ice (<20cm) => comparable to observations175 WHERE( htm_i(:,:) < 0.2 .AND. htm_i(:,:) > 0. ) ; z2d = wfx_bog176 ELSEWHERE ; z2d = 0._wp177 END WHERE178 CALL iom_put( "vfxthin", ( wfx_opw + z2d ) * ztmp )179 ENDIF180 181 ztmp = rday * r1_rhosn182 CALL iom_put( "vfxspr" , wfx_spr * ztmp ) ! precip (snow)183 CALL iom_put( "vfxsnw" , wfx_snw * ztmp ) ! total snw growth/melt184 CALL iom_put( "vfxsub" , wfx_sub * ztmp ) ! sublimation (snow/ice)185 CALL iom_put( "vfxsub_err" , wfx_err_sub * ztmp ) ! "excess" of sublimation sent to ocean186 187 CALL iom_put ('hfxthd' , hfx_thd(:,:) ) !188 CALL iom_put ('hfxdyn' , hfx_dyn(:,:) ) !189 CALL iom_put ('hfxres' , hfx_res(:,:) ) !190 CALL iom_put ('hfxout' , hfx_out(:,:) ) !191 CALL iom_put ('hfxin' , hfx_in(:,:) ) !192 CALL iom_put ('hfxsnw' , hfx_snw(:,:) ) !193 CALL iom_put ('hfxsub' , hfx_sub(:,:) ) !194 CALL iom_put ('hfxerr' , hfx_err_dif(:,:) ) !195 CALL iom_put ('hfxerr_rem' , hfx_err_rem(:,:) ) !196 197 CALL iom_put ('hfxsum' , hfx_sum(:,:) ) !198 CALL iom_put ('hfxbom' , hfx_bom(:,:) ) !199 CALL iom_put ('hfxbog' , hfx_bog(:,:) ) !200 CALL iom_put ('hfxdif' , hfx_dif(:,:) ) !201 CALL iom_put ('hfxopw' , hfx_opw(:,:) ) !202 CALL iom_put ('hfxtur' , fhtur(:,:) * at_i_b(:,:) ) ! turbulent heat flux at ice base203 CALL iom_put ('hfxdhc' , diag_heat(:,:) ) ! Heat content variation in snow and ice204 CALL iom_put ('hfxspr' , hfx_spr(:,:) ) ! Heat content of snow precip205 206 !!gm ====>>>>> THIS should be moved where at_ip, vt_ip are computed fro the last time in the time-step (limmpd)207 ! MV MP 2016208 130 IF ( ln_pnd ) THEN 209 131 CALL iom_put( "iceamp" , at_ip * zswi ) ! melt pond total fraction 210 132 CALL iom_put( "icevmp" , vt_ip * zswi ) ! melt pond total volume per unit area 211 133 ENDIF 212 ! END MV MP 2016213 !!gm <<<<<<======= end214 134 215 135 !---------------------------------- … … 225 145 IF ( iom_use('brinevol_cat') ) CALL iom_put( "brinevol_cat", bv_i * 100. * zswi2 ) ! brine volume 226 146 227 ! MV MP 2016228 147 IF ( ln_pnd ) THEN 229 148 IF ( iom_use('iceamp_cat') ) CALL iom_put( "iceamp_cat" , a_ip * zswi2 ) ! melt pond frac for categories … … 232 151 IF ( iom_use('iceafp_cat') ) CALL iom_put( "iceafp_cat" , a_ip_frac * zswi2 ) ! melt pond frac for categories 233 152 ENDIF 234 ! END MV MP 2016235 153 236 154 !-------------------------------- … … 360 278 !! History : 4.0 ! 2013-06 (C. Rousset) 361 279 !!---------------------------------------------------------------------- 362 INTEGER, INTENT( in ) :: kt ! ocean time-step index )280 INTEGER, INTENT( in ) :: kt ! ocean time-step index 363 281 INTEGER, INTENT( in ) :: kid , kh_i 364 282 INTEGER :: nz_i, jl … … 476 394 CALL histwrite( kid, "sntemcat", kt, tm_su - rt0 , jpi*jpj*jpl, (/1/) ) 477 395 478 ! Close the file 479 ! ----------------- 480 !!gm I don't understand why the file is not closed ! 481 !CALL histclo( kid ) 396 !! The file is closed in dia_wri_state (ocean routine) 397 !! CALL histclo( kid ) 482 398 ! 483 399 END SUBROUTINE ice_wri_state
Note: See TracChangeset
for help on using the changeset viewer.