[825] | 1 | MODULE limwri |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE limwri *** |
---|
| 4 | !! Ice diagnostics : write ice output files |
---|
| 5 | !!====================================================================== |
---|
[888] | 6 | #if defined key_lim3 |
---|
[825] | 7 | !!---------------------------------------------------------------------- |
---|
[2528] | 8 | !! 'key_lim3' LIM3 sea-ice model |
---|
[825] | 9 | !!---------------------------------------------------------------------- |
---|
| 10 | !! lim_wri : write of the diagnostics variables in ouput file |
---|
[4045] | 11 | !! lim_wri_state : write for initial state or/and abandon |
---|
[825] | 12 | !!---------------------------------------------------------------------- |
---|
| 13 | USE ioipsl |
---|
[888] | 14 | USE dianam ! build name of file (routine) |
---|
[825] | 15 | USE phycst |
---|
| 16 | USE dom_oce |
---|
[888] | 17 | USE sbc_oce ! Surface boundary condition: ocean fields |
---|
| 18 | USE sbc_ice ! Surface boundary condition: ice fields |
---|
[825] | 19 | USE dom_ice |
---|
| 20 | USE ice |
---|
[2715] | 21 | USE limvar |
---|
| 22 | USE in_out_manager |
---|
[825] | 23 | USE lbclnk |
---|
[2715] | 24 | USE lib_mpp ! MPP library |
---|
[3294] | 25 | USE wrk_nemo ! work arrays |
---|
[825] | 26 | USE par_ice |
---|
[4045] | 27 | USE iom |
---|
| 28 | USE timing ! Timing |
---|
| 29 | USE lib_fortran ! Fortran utilities |
---|
[825] | 30 | |
---|
| 31 | IMPLICIT NONE |
---|
| 32 | PRIVATE |
---|
| 33 | |
---|
| 34 | PUBLIC lim_wri ! routine called by lim_step.F90 |
---|
[4045] | 35 | PUBLIC lim_wri_state ! called by dia_wri_state |
---|
[825] | 36 | |
---|
[4332] | 37 | REAL(wp) :: epsi06 = 1.e-6_wp |
---|
[2528] | 38 | !!---------------------------------------------------------------------- |
---|
[4045] | 39 | !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) |
---|
[2528] | 40 | !! $Id$ |
---|
[2715] | 41 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
[2528] | 42 | !!---------------------------------------------------------------------- |
---|
| 43 | CONTAINS |
---|
[825] | 44 | |
---|
| 45 | #if defined key_dimgout |
---|
| 46 | # include "limwri_dimg.h90" |
---|
| 47 | #else |
---|
| 48 | |
---|
| 49 | SUBROUTINE lim_wri( kindic ) |
---|
| 50 | !!------------------------------------------------------------------- |
---|
| 51 | !! This routine computes the average of some variables and write it |
---|
| 52 | !! on the ouput files. |
---|
| 53 | !! ATTENTION cette routine n'est valable que si le pas de temps est |
---|
| 54 | !! egale a une fraction entiere de 1 jours. |
---|
| 55 | !! Diff 1-D 3-D : suppress common also included in etat |
---|
| 56 | !! suppress cmoymo 11-18 |
---|
| 57 | !! modif : 03/06/98 |
---|
| 58 | !!------------------------------------------------------------------- |
---|
[2715] | 59 | INTEGER, INTENT(in) :: kindic ! if kindic < 0 there has been an error somewhere |
---|
| 60 | ! |
---|
[4634] | 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 |
---|
[2715] | 65 | !!------------------------------------------------------------------- |
---|
[825] | 66 | |
---|
[4045] | 67 | IF( nn_timing == 1 ) CALL timing_start('limwri') |
---|
| 68 | |
---|
[4634] | 69 | CALL wrk_alloc( jpi, jpj, jpl, zoi, zei ) |
---|
| 70 | CALL wrk_alloc( jpi, jpj , z2d, z2da, z2db, zind ) |
---|
[2777] | 71 | |
---|
[4634] | 72 | !----------------------------- |
---|
| 73 | ! Mean category values |
---|
| 74 | !----------------------------- |
---|
[825] | 75 | |
---|
[4634] | 76 | CALL lim_var_icetm ! mean sea ice temperature |
---|
[921] | 77 | |
---|
[4634] | 78 | CALL lim_var_bv ! brine volume |
---|
[825] | 79 | |
---|
[4634] | 80 | DO jj = 1, jpj ! presence indicator of ice |
---|
| 81 | DO ji = 1, jpi |
---|
| 82 | zind(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) |
---|
[825] | 83 | END DO |
---|
[4634] | 84 | END DO |
---|
| 85 | ! |
---|
| 86 | ! |
---|
| 87 | CALL iom_put( "iceconc" , at_i ) ! ice concentration |
---|
| 88 | ! |
---|
| 89 | DO jj = 1, jpj ! mean ice thickness |
---|
| 90 | DO ji = 1, jpi |
---|
| 91 | z2d(ji,jj) = vt_i(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zind(ji,jj) |
---|
| 92 | END DO |
---|
| 93 | END DO |
---|
| 94 | CALL iom_put( "icethic_cea" , z2d ) ! ice thickness (i.e. icethi(:,:)) |
---|
| 95 | CALL iom_put( "icevolu" , vt_i ) ! ice volume = mean ice thickness over the cell |
---|
| 96 | DO jj = 1, jpj |
---|
| 97 | DO ji = 1, jpi |
---|
| 98 | z2d(ji,jj) = vt_s(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zind(ji,jj) |
---|
| 99 | END DO |
---|
| 100 | END DO |
---|
| 101 | CALL iom_put( "snowthic_cea" , z2d ) ! snow thickness = mean snow thickness over the cell |
---|
| 102 | CALL iom_put( "isst" , sst_m ) ! sea surface temperature |
---|
| 103 | CALL iom_put( "isss" , sss_m ) ! sea surface salinity |
---|
| 104 | CALL iom_put( "qt_oce" , qns + qsr ) ! total flux at ocean surface |
---|
| 105 | ! |
---|
| 106 | DO jj = 2 , jpjm1 |
---|
| 107 | DO ji = 2 , jpim1 |
---|
| 108 | z2da(ji,jj) = ( u_ice(ji,jj) * tmu(ji,jj) + u_ice(ji-1,jj) * tmu(ji-1,jj) ) * 0.5_wp |
---|
| 109 | z2db(ji,jj) = ( v_ice(ji,jj) * tmv(ji,jj) + v_ice(ji,jj-1) * tmv(ji,jj-1) ) * 0.5_wp |
---|
| 110 | END DO |
---|
| 111 | END DO |
---|
| 112 | CALL lbc_lnk( z2da, 'T', -1. ) |
---|
| 113 | CALL lbc_lnk( z2db, 'T', -1. ) |
---|
| 114 | DO jj = 1, jpj |
---|
| 115 | DO ji = 1, jpi |
---|
| 116 | z2d(ji,jj) = SQRT( z2da(ji,jj) * z2da(ji,jj) + z2db(ji,jj) * z2db(ji,jj) ) |
---|
| 117 | END DO |
---|
| 118 | END DO |
---|
| 119 | CALL iom_put( "uice_ipa" , z2da ) ! ice velocity u component |
---|
| 120 | CALL iom_put( "vice_ipa" , z2db ) ! ice velocity v component |
---|
| 121 | CALL iom_put( "icevel" , z2d ) ! ice velocity module |
---|
| 122 | !!SF BE CAREFUL : qsr_oce qnd qns_oce are after penetration over ice |
---|
| 123 | CALL iom_put( "qsr_oce" , qsr ) ! solar flux at ocean surface |
---|
| 124 | CALL iom_put( "qns_oce" , qns ) ! non-solar flux at ocean surface |
---|
| 125 | !!SF end be careful |
---|
| 126 | CALL iom_put( "utau_ice" , utau_ice ) ! wind stress over ice along i-axis at I-point |
---|
| 127 | CALL iom_put( "vtau_ice" , vtau_ice ) ! wind stress over ice along j-axis at I-point |
---|
| 128 | !!SF commented because this computation is not ok |
---|
| 129 | !SF because qsr is not qsr_ocean but it contains already qsr_ice |
---|
| 130 | !SF |
---|
| 131 | !SF DO jj = 1 , jpj |
---|
| 132 | !SF DO ji = 1 , jpi |
---|
| 133 | !SF z2d(ji,jj) = ( 1._wp - at_i(ji,jj) ) * qsr(ji,jj) |
---|
| 134 | !SF END DO |
---|
| 135 | !SF END DO |
---|
| 136 | !SF CALL iom_put( "qsr_io" , z2d ) ! solar flux at ice/ocean surface |
---|
| 137 | !SF DO jj = 1 , jpj |
---|
| 138 | !SF DO ji = 1 , jpi |
---|
| 139 | !SF z2d(ji,jj) = ( 1._wp - at_i(ji,jj) ) * qns(ji,jj) |
---|
| 140 | !SF END DO |
---|
| 141 | !SF END DO |
---|
| 142 | !SF CALL iom_put( "qns_io" , z2d ) ! non-solar flux at ice/ocean surface |
---|
| 143 | CALL iom_put( "snowpre" , sprecip ) ! snow precipitation |
---|
| 144 | CALL iom_put( "micesalt" , smt_i ) ! mean ice salinity |
---|
| 145 | ! |
---|
| 146 | z2d(:,:) = 0.e0 |
---|
| 147 | DO jl = 1, jpl |
---|
| 148 | DO jj = 1, jpj |
---|
| 149 | DO ji = 1, jpi |
---|
| 150 | z2d(ji,jj) = z2d(ji,jj) + zind(ji,jj) * oa_i(ji,jj,jl) |
---|
| 151 | END DO |
---|
| 152 | END DO |
---|
| 153 | END DO |
---|
| 154 | z1_365 = 1._wp / 365._wp |
---|
| 155 | CALL iom_put( "miceage" , z2d * z1_365 ) ! mean ice age |
---|
| 156 | DO jj = 1, jpj |
---|
| 157 | DO ji = 1, jpi |
---|
| 158 | z2d(ji,jj) = ( tm_i(ji,jj) - rtt ) * zind(ji,jj) |
---|
| 159 | END DO |
---|
| 160 | END DO |
---|
[825] | 161 | |
---|
[4634] | 162 | CALL iom_put( "micet" , z2d ) ! mean ice temperature |
---|
| 163 | CALL iom_put( "icehc" , et_i ) ! ice total heat content |
---|
| 164 | CALL iom_put( "isnowhc" , et_s ) ! snow total heat content |
---|
| 165 | ! |
---|
| 166 | z2d(:,:) = 0.e0 |
---|
[825] | 167 | DO jl = 1, jpl |
---|
| 168 | DO jj = 1, jpj |
---|
| 169 | DO ji = 1, jpi |
---|
[4634] | 170 | 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 ) |
---|
[825] | 171 | END DO |
---|
| 172 | END DO |
---|
| 173 | END DO |
---|
[4634] | 174 | CALL iom_put( "icest" , z2d ) ! ice surface temperature |
---|
| 175 | CALL iom_put( "ibrinv" , bv_i * 100._wp ) ! brine volume |
---|
| 176 | DO jj = 1, jpj |
---|
| 177 | DO ji = 1, jpi |
---|
| 178 | zindb = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) ) ) |
---|
| 179 | z2d(ji,jj) = hicol(ji,jj) * zindb |
---|
| 180 | END DO |
---|
| 181 | END DO |
---|
| 182 | CALL iom_put( "icecolf" , z2d ) ! frazil ice collection thickness |
---|
| 183 | CALL iom_put( "icestr" , strength * 0.001 ) ! ice strength |
---|
| 184 | CALL iom_put( "idive" , divu_i * 1.0e8 ) ! divergence |
---|
| 185 | CALL iom_put( "ishear" , shear_i * 1.0e8 ) ! shear |
---|
| 186 | CALL iom_put( "snowvol" , vt_s ) ! snow volume |
---|
[825] | 187 | |
---|
[4634] | 188 | CALL iom_put( "icetrp" , diag_trp_vi * rday ) ! ice volume transport |
---|
| 189 | CALL iom_put( "snwtrp" , diag_trp_vs * rday ) ! snw volume transport |
---|
| 190 | CALL iom_put( "deitrp" , diag_trp_ei ) ! advected ice enthalpy (W/m2) |
---|
| 191 | CALL iom_put( "destrp" , diag_trp_es ) ! advected snw enthalpy (W/m2) |
---|
[4045] | 192 | |
---|
[4634] | 193 | CALL iom_put( "sfxbog" , sfx_bog * rday ) ! salt flux from brines |
---|
| 194 | CALL iom_put( "sfxbom" , sfx_bom * rday ) ! salt flux from brines |
---|
| 195 | CALL iom_put( "sfxsum" , sfx_sum * rday ) ! salt flux from brines |
---|
| 196 | CALL iom_put( "sfxsni" , sfx_sni * rday ) ! salt flux from brines |
---|
| 197 | CALL iom_put( "sfxopw" , sfx_opw * rday ) ! salt flux from brines |
---|
| 198 | CALL iom_put( "sfxdyn" , sfx_dyn * rday ) ! salt flux from ridging rafting |
---|
| 199 | CALL iom_put( "sfxres" , sfx_res * rday ) ! salt flux from limupdate (resultant) |
---|
| 200 | CALL iom_put( "sfxbri" , sfx_bri * rday ) ! salt flux from brines |
---|
| 201 | CALL iom_put( "sfx" , sfx * rday ) ! total salt flux |
---|
[921] | 202 | |
---|
[4634] | 203 | CALL iom_put( "vfxres" , wfx_res * rday / rhoic ) ! daily prod./melting due to limupdate |
---|
| 204 | CALL iom_put( "vfxopw" , wfx_opw * rday / rhoic ) ! daily lateral thermodynamic ice production |
---|
| 205 | CALL iom_put( "vfxsni" , wfx_sni * rday / rhoic ) ! daily snowice ice production |
---|
| 206 | CALL iom_put( "vfxbog" , wfx_bog * rday / rhoic ) ! daily bottom thermodynamic ice production |
---|
| 207 | CALL iom_put( "vfxdyn" , wfx_dyn * rday / rhoic ) ! daily dynamic ice production (rid/raft) |
---|
| 208 | CALL iom_put( "vfxsum" , wfx_sum * rday / rhoic ) ! surface melt |
---|
| 209 | CALL iom_put( "vfxbom" , wfx_bom * rday / rhoic ) ! bottom melt |
---|
| 210 | CALL iom_put( "vfxice" , wfx_ice * rday / rhoic ) ! total ice growth/melt |
---|
| 211 | CALL iom_put( "vfxsnw" , wfx_snw * rday / rhoic ) ! total snw growth/melt |
---|
| 212 | CALL iom_put( "vfxsub" , wfx_sub * rday / rhoic ) ! sublimation (snow) |
---|
[825] | 213 | |
---|
[4634] | 214 | CALL iom_put ('hfxdhc1', diag_heat_dhc1(:,:) ) ! Heat content variation in snow and ice |
---|
| 215 | CALL iom_put ('hfxspr', hfx_spr(:,:) ) ! Heat content of snow precip |
---|
| 216 | CALL iom_put ('hfxqsr', qsr(:,:) ) ! solar fluxes used by snw/ice |
---|
| 217 | CALL iom_put ('hfxqns', qns(:,:) ) ! non solar fluxes used by snw/ice |
---|
[825] | 218 | |
---|
[4634] | 219 | CALL iom_put ('hfxthd', hfx_thd(:,:) ) ! |
---|
| 220 | CALL iom_put ('hfxdyn', hfx_dyn(:,:) ) ! |
---|
| 221 | CALL iom_put ('hfxres', hfx_res(:,:) ) ! |
---|
| 222 | CALL iom_put ('hfxout', hfx_out(:,:) ) ! |
---|
| 223 | CALL iom_put ('hfxin' , hfx_in(:,:) ) ! |
---|
| 224 | CALL iom_put ('hfxtot', hfx_tot(:,:) ) ! |
---|
| 225 | CALL iom_put ('hfxsnw', hfx_snw(:,:) ) ! |
---|
| 226 | CALL iom_put ('hfxsub', hfx_sub(:,:) ) ! |
---|
| 227 | CALL iom_put ('hfxerr', hfx_err(:,:) ) ! |
---|
| 228 | CALL iom_put ('hfxerr_rem', hfx_err_rem(:,:) ) ! |
---|
[825] | 229 | |
---|
[4634] | 230 | !-------------------------------- |
---|
| 231 | ! Output values for each category |
---|
| 232 | !-------------------------------- |
---|
[921] | 233 | |
---|
| 234 | DO jl = 1, jpl |
---|
| 235 | CALL lbc_lnk( a_i(:,:,jl) , 'T' , 1. ) |
---|
| 236 | CALL lbc_lnk( sm_i(:,:,jl) , 'T' , 1. ) |
---|
| 237 | CALL lbc_lnk( oa_i(:,:,jl) , 'T' , 1. ) |
---|
| 238 | CALL lbc_lnk( ht_i(:,:,jl) , 'T' , 1. ) |
---|
| 239 | CALL lbc_lnk( ht_s(:,:,jl) , 'T' , 1. ) |
---|
[825] | 240 | END DO |
---|
| 241 | |
---|
[921] | 242 | ! Compute ice age |
---|
| 243 | DO jl = 1, jpl |
---|
[825] | 244 | DO jj = 1, jpj |
---|
| 245 | DO ji = 1, jpi |
---|
[4634] | 246 | zinda = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) ) |
---|
[4045] | 247 | zoi(ji,jj,jl) = oa_i(ji,jj,jl) / MAX( a_i(ji,jj,jl) , epsi06 ) * zinda |
---|
[825] | 248 | END DO |
---|
| 249 | END DO |
---|
| 250 | END DO |
---|
[4634] | 251 | |
---|
| 252 | CALL iom_put( "iceage_cat" , zoi ) ! ice age for categories |
---|
[825] | 253 | |
---|
[921] | 254 | ! Compute brine volume |
---|
[2715] | 255 | zei(:,:,:) = 0._wp |
---|
[921] | 256 | DO jl = 1, jpl |
---|
| 257 | DO jk = 1, nlay_i |
---|
| 258 | DO jj = 1, jpj |
---|
| 259 | DO ji = 1, jpi |
---|
[4634] | 260 | zinda = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) ) |
---|
[921] | 261 | zei(ji,jj,jl) = zei(ji,jj,jl) + 100.0* & |
---|
[4045] | 262 | ( - tmut * s_i(ji,jj,jk,jl) / MIN( ( t_i(ji,jj,jk,jl) - rtt ), - epsi06 ) ) * & |
---|
[921] | 263 | zinda / nlay_i |
---|
| 264 | END DO |
---|
| 265 | END DO |
---|
| 266 | END DO |
---|
| 267 | END DO |
---|
[825] | 268 | |
---|
[921] | 269 | DO jl = 1, jpl |
---|
| 270 | CALL lbc_lnk( zei(:,:,jl) , 'T' , 1. ) |
---|
| 271 | END DO |
---|
[825] | 272 | |
---|
[4634] | 273 | CALL iom_put( "iceconc_cat" , a_i ) ! area for categories |
---|
| 274 | CALL iom_put( "icethic_cat" , ht_i ) ! thickness for categories |
---|
| 275 | CALL iom_put( "snowthic_cat" , ht_s ) ! snow depth for categories |
---|
| 276 | CALL iom_put( "salinity_cat" , sm_i ) ! salinity for categories |
---|
| 277 | CALL iom_put( "brinevol_cat" , zei ) ! brine volume for categories |
---|
[921] | 278 | |
---|
| 279 | ! ! Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s |
---|
| 280 | ! IF( kindic < 0 ) CALL lim_wri_state( 'output.abort' ) |
---|
| 281 | ! not yet implemented |
---|
| 282 | |
---|
[4634] | 283 | CALL wrk_dealloc( jpi, jpj, jpl, zoi, zei ) |
---|
| 284 | CALL wrk_dealloc( jpi, jpj , z2d, zind, z2da, z2db ) |
---|
[825] | 285 | |
---|
[4045] | 286 | IF( nn_timing == 1 ) CALL timing_stop('limwri') |
---|
[2777] | 287 | |
---|
[825] | 288 | END SUBROUTINE lim_wri |
---|
| 289 | #endif |
---|
| 290 | |
---|
[4045] | 291 | |
---|
| 292 | SUBROUTINE lim_wri_state( kt, kid, kh_i ) |
---|
| 293 | !!--------------------------------------------------------------------- |
---|
| 294 | !! *** ROUTINE lim_wri_state *** |
---|
| 295 | !! |
---|
| 296 | !! ** Purpose : create a NetCDF file named cdfile_name which contains |
---|
| 297 | !! the instantaneous ice state and forcing fields for ice model |
---|
| 298 | !! Used to find errors in the initial state or save the last |
---|
| 299 | !! ocean state in case of abnormal end of a simulation |
---|
| 300 | !! |
---|
| 301 | !! History : |
---|
| 302 | !! 4.1 ! 2013-06 (C. Rousset) |
---|
| 303 | !!---------------------------------------------------------------------- |
---|
| 304 | INTEGER, INTENT( in ) :: kt ! ocean time-step index) |
---|
| 305 | INTEGER, INTENT( in ) :: kid , kh_i |
---|
| 306 | !!---------------------------------------------------------------------- |
---|
[4634] | 307 | |
---|
[825] | 308 | |
---|
[4045] | 309 | CALL histdef( kid, "iicethic", "Ice thickness" , "m" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 310 | CALL histdef( kid, "iiceconc", "Ice concentration" , "%" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 311 | CALL histdef( kid, "iicetemp", "Ice temperature" , "C" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 312 | CALL histdef( kid, "iicevelu", "i-Ice speed (I-point)" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 313 | CALL histdef( kid, "iicevelv", "j-Ice speed (I-point)" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 314 | CALL histdef( kid, "iicestru", "i-Wind stress over ice (I-pt)", "Pa", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 315 | CALL histdef( kid, "iicestrv", "j-Wind stress over ice (I-pt)", "Pa", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 316 | CALL histdef( kid, "iicesflx", "Solar flux over ocean" , "w/m2" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 317 | CALL histdef( kid, "iicenflx", "Non-solar flux over ocean" , "w/m2" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 318 | CALL histdef( kid, "isnowpre", "Snow precipitation" , "kg/m2/s", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 319 | CALL histdef( kid, "iicesali", "Ice salinity" , "PSU" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 320 | CALL histdef( kid, "iicevolu", "Ice volume" , "m" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 321 | CALL histdef( kid, "iicedive", "Ice divergence" , "10-8s-1", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[4332] | 322 | CALL histdef( kid, "iicebopr", "Ice bottom production" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 323 | CALL histdef( kid, "iicedypr", "Ice dynamic production" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 324 | CALL histdef( kid, "iicelapr", "Ice open water prod" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 325 | CALL histdef( kid, "iicesipr", "Snow ice production " , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 326 | CALL histdef( kid, "iicerepr", "Ice prod from limupdate" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 327 | CALL histdef( kid, "iicebome", "Ice bottom melt" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 328 | CALL histdef( kid, "iicesume", "Ice surface melt" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 329 | CALL histdef( kid, "iisfxthd", "Salt flux from thermo" , "" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[4634] | 330 | CALL histdef( kid, "iisfxdyn", "Salt flux from dynmics" , "" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[4332] | 331 | CALL histdef( kid, "iisfxres", "Salt flux from limupdate", "" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[4045] | 332 | |
---|
| 333 | CALL histend( kid, snc4set ) ! end of the file definition |
---|
| 334 | |
---|
| 335 | CALL histwrite( kid, "iicethic", kt, icethi , jpi*jpj, (/1/) ) |
---|
| 336 | CALL histwrite( kid, "iiceconc", kt, at_i , jpi*jpj, (/1/) ) |
---|
| 337 | CALL histwrite( kid, "iicetemp", kt, tm_i - rtt , jpi*jpj, (/1/) ) |
---|
| 338 | CALL histwrite( kid, "iicevelu", kt, u_ice , jpi*jpj, (/1/) ) |
---|
| 339 | CALL histwrite( kid, "iicevelv", kt, v_ice , jpi*jpj, (/1/) ) |
---|
| 340 | CALL histwrite( kid, "iicestru", kt, utau_ice , jpi*jpj, (/1/) ) |
---|
| 341 | CALL histwrite( kid, "iicestrv", kt, vtau_ice , jpi*jpj, (/1/) ) |
---|
| 342 | CALL histwrite( kid, "iicesflx", kt, qsr , jpi*jpj, (/1/) ) |
---|
| 343 | CALL histwrite( kid, "iicenflx", kt, qns , jpi*jpj, (/1/) ) |
---|
| 344 | CALL histwrite( kid, "isnowpre", kt, sprecip , jpi*jpj, (/1/) ) |
---|
| 345 | CALL histwrite( kid, "iicesali", kt, smt_i , jpi*jpj, (/1/) ) |
---|
| 346 | CALL histwrite( kid, "iicevolu", kt, vt_i , jpi*jpj, (/1/) ) |
---|
| 347 | CALL histwrite( kid, "iicedive", kt, divu_i*1.0e8 , jpi*jpj, (/1/) ) |
---|
| 348 | |
---|
[4634] | 349 | CALL histwrite( kid, "iicebopr", kt, wfx_bog , jpi*jpj, (/1/) ) |
---|
| 350 | CALL histwrite( kid, "iicedypr", kt, wfx_dyn , jpi*jpj, (/1/) ) |
---|
| 351 | CALL histwrite( kid, "iicelapr", kt, wfx_opw , jpi*jpj, (/1/) ) |
---|
| 352 | CALL histwrite( kid, "iicesipr", kt, wfx_sni , jpi*jpj, (/1/) ) |
---|
| 353 | CALL histwrite( kid, "iicerepr", kt, wfx_res , jpi*jpj, (/1/) ) |
---|
| 354 | CALL histwrite( kid, "iicebome", kt, wfx_bom , jpi*jpj, (/1/) ) |
---|
| 355 | CALL histwrite( kid, "iicesume", kt, wfx_sum , jpi*jpj, (/1/) ) |
---|
| 356 | !CALL histwrite( kid, "iisfxthd", kt, sfx_thd , jpi*jpj, (/1/) ) |
---|
| 357 | CALL histwrite( kid, "iisfxdyn", kt, sfx_dyn , jpi*jpj, (/1/) ) |
---|
[4332] | 358 | CALL histwrite( kid, "iisfxres", kt, sfx_res , jpi*jpj, (/1/) ) |
---|
| 359 | |
---|
[4634] | 360 | ! Close the file |
---|
| 361 | ! ----------------- |
---|
[4635] | 362 | !CALL histclo( kid ) |
---|
[4045] | 363 | |
---|
| 364 | END SUBROUTINE lim_wri_state |
---|
| 365 | |
---|
[825] | 366 | #else |
---|
| 367 | !!---------------------------------------------------------------------- |
---|
| 368 | !! Default option : Empty module NO LIM sea-ice model |
---|
| 369 | !!---------------------------------------------------------------------- |
---|
| 370 | CONTAINS |
---|
| 371 | SUBROUTINE lim_wri ! Empty routine |
---|
| 372 | END SUBROUTINE lim_wri |
---|
| 373 | #endif |
---|
| 374 | |
---|
| 375 | !!====================================================================== |
---|
| 376 | END MODULE limwri |
---|