1 | MODULE limwri |
---|
2 | !!====================================================================== |
---|
3 | !! *** MODULE limwri *** |
---|
4 | !! Ice diagnostics : write ice output files |
---|
5 | !!====================================================================== |
---|
6 | #if defined key_lim3 |
---|
7 | !!---------------------------------------------------------------------- |
---|
8 | !! 'key_lim3' LIM3 sea-ice model |
---|
9 | !!---------------------------------------------------------------------- |
---|
10 | !! lim_wri : write of the diagnostics variables in ouput file |
---|
11 | !! lim_wri_state : write for initial state or/and abandon |
---|
12 | !!---------------------------------------------------------------------- |
---|
13 | USE ioipsl |
---|
14 | USE dianam ! build name of file (routine) |
---|
15 | USE phycst |
---|
16 | USE dom_oce |
---|
17 | USE sbc_oce ! Surface boundary condition: ocean fields |
---|
18 | USE sbc_ice ! Surface boundary condition: ice fields |
---|
19 | USE dom_ice |
---|
20 | USE ice |
---|
21 | USE limvar |
---|
22 | USE in_out_manager |
---|
23 | USE lbclnk |
---|
24 | USE lib_mpp ! MPP library |
---|
25 | USE wrk_nemo ! work arrays |
---|
26 | USE par_ice |
---|
27 | USE iom |
---|
28 | USE timing ! Timing |
---|
29 | USE lib_fortran ! Fortran utilities |
---|
30 | |
---|
31 | IMPLICIT NONE |
---|
32 | PRIVATE |
---|
33 | |
---|
34 | PUBLIC lim_wri ! routine called by lim_step.F90 |
---|
35 | PUBLIC lim_wri_state ! called by dia_wri_state |
---|
36 | |
---|
37 | REAL(wp) :: epsi06 = 1.e-6_wp |
---|
38 | REAL(wp) :: zzero = 0._wp |
---|
39 | REAL(wp) :: zone = 1._wp |
---|
40 | !!---------------------------------------------------------------------- |
---|
41 | !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) |
---|
42 | !! $Id$ |
---|
43 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
44 | !!---------------------------------------------------------------------- |
---|
45 | CONTAINS |
---|
46 | |
---|
47 | #if defined key_dimgout |
---|
48 | # include "limwri_dimg.h90" |
---|
49 | #else |
---|
50 | |
---|
51 | SUBROUTINE lim_wri( kindic ) |
---|
52 | !!------------------------------------------------------------------- |
---|
53 | !! This routine computes the average of some variables and write it |
---|
54 | !! on the ouput files. |
---|
55 | !! ATTENTION cette routine n'est valable que si le pas de temps est |
---|
56 | !! egale a une fraction entiere de 1 jours. |
---|
57 | !! Diff 1-D 3-D : suppress common also included in etat |
---|
58 | !! suppress cmoymo 11-18 |
---|
59 | !! modif : 03/06/98 |
---|
60 | !!------------------------------------------------------------------- |
---|
61 | INTEGER, INTENT(in) :: kindic ! if kindic < 0 there has been an error somewhere |
---|
62 | ! |
---|
63 | INTEGER :: ji, jj, jk, jl ! dummy loop indices |
---|
64 | REAL(wp) :: zinda, zindb, z1_365 |
---|
65 | REAL(wp), POINTER, DIMENSION(:,:,:) :: zoi, zei |
---|
66 | REAL(wp), POINTER, DIMENSION(:,:) :: z2d, z2da, z2db, zind ! 2D workspace |
---|
67 | !!------------------------------------------------------------------- |
---|
68 | |
---|
69 | IF( nn_timing == 1 ) CALL timing_start('limwri') |
---|
70 | |
---|
71 | CALL wrk_alloc( jpi, jpj, jpl, zoi, zei ) |
---|
72 | CALL wrk_alloc( jpi, jpj , z2d, z2da, z2db, zind ) |
---|
73 | |
---|
74 | |
---|
75 | !----------------------------- |
---|
76 | ! Mean category values |
---|
77 | !----------------------------- |
---|
78 | |
---|
79 | CALL lim_var_icetm ! mean sea ice temperature |
---|
80 | |
---|
81 | CALL lim_var_bv ! brine volume |
---|
82 | |
---|
83 | DO jj = 1, jpj ! presence indicator of ice |
---|
84 | DO ji = 1, jpi |
---|
85 | zind(ji,jj) = MAX( zzero , SIGN( zone , at_i(ji,jj) - epsi06 ) ) |
---|
86 | END DO |
---|
87 | END DO |
---|
88 | ! |
---|
89 | CALL iom_put( "iceconc" , at_i ) ! ice concentration |
---|
90 | ! |
---|
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 |
---|
99 | CALL iom_put( "icevolu" , vt_i ) ! ice volume = mean ice thickness over the cell |
---|
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 |
---|
113 | CALL iom_put( "isst" , sst_m ) ! sea surface temperature |
---|
114 | CALL iom_put( "isss" , sss_m ) ! sea surface salinity |
---|
115 | IF ( iom_use( "qt_oce" ) ) THEN |
---|
116 | CALL iom_put( "qt_oce" , qns + qsr ) ! total flux at ocean surface |
---|
117 | ENDIF |
---|
118 | ! |
---|
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 |
---|
143 | !!SF BE CAREFUL : qsr_oce qnd qns_oce are after penetration over ice |
---|
144 | CALL iom_put( "qsr_oce" , qsr ) ! solar flux at ocean surface |
---|
145 | CALL iom_put( "qns_oce" , qns ) ! non-solar flux at ocean surface |
---|
146 | !!SF end be careful |
---|
147 | CALL iom_put( "hfbri" , fhbri ) ! heat flux due to brine release |
---|
148 | CALL iom_put( "utau_ice" , utau_ice ) ! wind stress over ice along i-axis at I-point |
---|
149 | CALL iom_put( "vtau_ice" , vtau_ice ) ! wind stress over ice along j-axis at I-point |
---|
150 | !!SF commented because this computation is not ok |
---|
151 | !SF because qsr is not qsr_ocean but it contains already qsr_ice |
---|
152 | !SF |
---|
153 | !SF DO jj = 1 , jpj |
---|
154 | !SF DO ji = 1 , jpi |
---|
155 | !SF z2d(ji,jj) = ( 1._wp - at_i(ji,jj) ) * qsr(ji,jj) |
---|
156 | !SF END DO |
---|
157 | !SF END DO |
---|
158 | !SF CALL iom_put( "qsr_io" , z2d ) ! solar flux at ice/ocean surface |
---|
159 | !SF DO jj = 1 , jpj |
---|
160 | !SF DO ji = 1 , jpi |
---|
161 | !SF z2d(ji,jj) = ( 1._wp - at_i(ji,jj) ) * qns(ji,jj) |
---|
162 | !SF END DO |
---|
163 | !SF END DO |
---|
164 | !SF CALL iom_put( "qns_io" , z2d ) ! non-solar flux at ice/ocean surface |
---|
165 | CALL iom_put( "snowpre" , sprecip ) ! snow precipitation |
---|
166 | CALL iom_put( "micesalt" , smt_i ) ! mean ice salinity |
---|
167 | ! |
---|
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 |
---|
187 | DO jj = 1, jpj |
---|
188 | DO ji = 1, jpi |
---|
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 |
---|
194 | CALL iom_put( "icehc" , et_i ) ! ice total heat content |
---|
195 | CALL iom_put( "isnowhc" , et_s ) ! snow total heat content |
---|
196 | ! |
---|
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 |
---|
215 | DO jj = 1, jpj |
---|
216 | DO ji = 1, jpi |
---|
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 |
---|
241 | CALL iom_put( "snowvol" , vt_s ) ! snow volume |
---|
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 |
---|
251 | |
---|
252 | |
---|
253 | !-------------------------------- |
---|
254 | ! Output values for each category |
---|
255 | !-------------------------------- |
---|
256 | |
---|
257 | IF ( iom_use( "iceage_cat" ) ) THEN |
---|
258 | DO jl = 1, jpl |
---|
259 | CALL lbc_lnk( a_i(:,:,jl) , 'T' , 1. ) |
---|
260 | CALL lbc_lnk( sm_i(:,:,jl) , 'T' , 1. ) |
---|
261 | CALL lbc_lnk( oa_i(:,:,jl) , 'T' , 1. ) |
---|
262 | CALL lbc_lnk( ht_i(:,:,jl) , 'T' , 1. ) |
---|
263 | CALL lbc_lnk( ht_s(:,:,jl) , 'T' , 1. ) |
---|
264 | END DO |
---|
265 | |
---|
266 | DO jl = 1, jpl |
---|
267 | DO jj = 1, jpj |
---|
268 | DO ji = 1, jpi |
---|
269 | zinda = MAX( zzero , SIGN( zone , a_i(ji,jj,jl) - epsi06 ) ) |
---|
270 | zoi(ji,jj,jl) = oa_i(ji,jj,jl) / MAX( a_i(ji,jj,jl) , epsi06 ) * zinda |
---|
271 | END DO |
---|
272 | END DO |
---|
273 | END DO |
---|
274 | |
---|
275 | CALL iom_put( "iceage_cat" , zoi ) ! ice age for categories |
---|
276 | ENDIF |
---|
277 | |
---|
278 | ! Compute brine volume |
---|
279 | IF ( iom_use( "iceage_cat" ) ) THEN |
---|
280 | zei(:,:,:) = 0._wp |
---|
281 | DO jl = 1, jpl |
---|
282 | DO jk = 1, nlay_i |
---|
283 | DO jj = 1, jpj |
---|
284 | DO ji = 1, jpi |
---|
285 | zinda = MAX( zzero , SIGN( zone , a_i(ji,jj,jl) - epsi06 ) ) |
---|
286 | zei(ji,jj,jl) = zei(ji,jj,jl) + 100.0* & |
---|
287 | ( - tmut * s_i(ji,jj,jk,jl) / MIN( ( t_i(ji,jj,jk,jl) - rtt ), - epsi06 ) ) * & |
---|
288 | zinda / nlay_i |
---|
289 | END DO |
---|
290 | END DO |
---|
291 | END DO |
---|
292 | END DO |
---|
293 | |
---|
294 | DO jl = 1, jpl |
---|
295 | CALL lbc_lnk( zei(:,:,jl) , 'T' , 1. ) |
---|
296 | END DO |
---|
297 | CALL iom_put( "brinevol_cat" , zei ) ! brine volume for categories |
---|
298 | ENDIF |
---|
299 | |
---|
300 | CALL iom_put( "iceconc_cat" , a_i ) ! area for categories |
---|
301 | CALL iom_put( "icethic_cat" , ht_i ) ! thickness for categories |
---|
302 | CALL iom_put( "snowthic_cat" , ht_s ) ! snow depth for categories |
---|
303 | CALL iom_put( "salinity_cat" , sm_i ) ! salinity for categories |
---|
304 | |
---|
305 | ! ! Create an output files (output.lim.abort.nc) if S < 0 or u > 20 |
---|
306 | ! m/s |
---|
307 | ! IF( kindic < 0 ) CALL lim_wri_state( 'output.abort' ) |
---|
308 | ! not yet implemented |
---|
309 | |
---|
310 | CALL wrk_dealloc( jpi, jpj, jpl, zoi, zei ) |
---|
311 | CALL wrk_dealloc( jpi, jpj , z2d, zind, z2da, z2db ) |
---|
312 | |
---|
313 | IF( nn_timing == 1 ) CALL timing_stop('limwri') |
---|
314 | |
---|
315 | END SUBROUTINE lim_wri |
---|
316 | #endif |
---|
317 | |
---|
318 | |
---|
319 | SUBROUTINE lim_wri_state( kt, kid, kh_i ) |
---|
320 | !!--------------------------------------------------------------------- |
---|
321 | !! *** ROUTINE lim_wri_state *** |
---|
322 | !! |
---|
323 | !! ** Purpose : create a NetCDF file named cdfile_name which contains |
---|
324 | !! the instantaneous ice state and forcing fields for ice model |
---|
325 | !! Used to find errors in the initial state or save the last |
---|
326 | !! ocean state in case of abnormal end of a simulation |
---|
327 | !! |
---|
328 | !! History : |
---|
329 | !! 4.1 ! 2013-06 (C. Rousset) |
---|
330 | !!---------------------------------------------------------------------- |
---|
331 | INTEGER, INTENT( in ) :: kt ! ocean time-step index) |
---|
332 | INTEGER, INTENT( in ) :: kid , kh_i |
---|
333 | !!---------------------------------------------------------------------- |
---|
334 | |
---|
335 | |
---|
336 | |
---|
337 | CALL histdef( kid, "iicethic", "Ice thickness" , "m" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
338 | CALL histdef( kid, "iiceconc", "Ice concentration" , "%" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
339 | CALL histdef( kid, "iicetemp", "Ice temperature" , "C" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
340 | CALL histdef( kid, "iicevelu", "i-Ice speed (I-point)" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
341 | CALL histdef( kid, "iicevelv", "j-Ice speed (I-point)" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
342 | 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 ) |
---|
343 | 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 ) |
---|
344 | CALL histdef( kid, "iicesflx", "Solar flux over ocean" , "w/m2" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
345 | CALL histdef( kid, "iicenflx", "Non-solar flux over ocean" , "w/m2" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
346 | CALL histdef( kid, "isnowpre", "Snow precipitation" , "kg/m2/s", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
347 | CALL histdef( kid, "iicesali", "Ice salinity" , "PSU" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
348 | CALL histdef( kid, "iicevolu", "Ice volume" , "m" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
349 | CALL histdef( kid, "iicedive", "Ice divergence" , "10-8s-1", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
350 | CALL histdef( kid, "iicebopr", "Ice bottom production" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
351 | CALL histdef( kid, "iicedypr", "Ice dynamic production" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
352 | CALL histdef( kid, "iicelapr", "Ice open water prod" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
353 | CALL histdef( kid, "iicesipr", "Snow ice production " , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
354 | CALL histdef( kid, "iicerepr", "Ice prod from limupdate" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
355 | CALL histdef( kid, "iicebome", "Ice bottom melt" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
356 | CALL histdef( kid, "iicesume", "Ice surface melt" , "m/s" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
357 | CALL histdef( kid, "iisfxthd", "Salt flux from thermo" , "" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
358 | CALL histdef( kid, "iisfxmec", "Salt flux from dynmics" , "" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
359 | CALL histdef( kid, "iisfxres", "Salt flux from limupdate", "" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
360 | |
---|
361 | CALL histend( kid, snc4set ) ! end of the file definition |
---|
362 | |
---|
363 | CALL histwrite( kid, "iicethic", kt, icethi , jpi*jpj, (/1/) ) |
---|
364 | CALL histwrite( kid, "iiceconc", kt, at_i , jpi*jpj, (/1/) ) |
---|
365 | CALL histwrite( kid, "iicetemp", kt, tm_i - rtt , jpi*jpj, (/1/) ) |
---|
366 | CALL histwrite( kid, "iicevelu", kt, u_ice , jpi*jpj, (/1/) ) |
---|
367 | CALL histwrite( kid, "iicevelv", kt, v_ice , jpi*jpj, (/1/) ) |
---|
368 | CALL histwrite( kid, "iicestru", kt, utau_ice , jpi*jpj, (/1/) ) |
---|
369 | CALL histwrite( kid, "iicestrv", kt, vtau_ice , jpi*jpj, (/1/) ) |
---|
370 | CALL histwrite( kid, "iicesflx", kt, qsr , jpi*jpj, (/1/) ) |
---|
371 | CALL histwrite( kid, "iicenflx", kt, qns , jpi*jpj, (/1/) ) |
---|
372 | CALL histwrite( kid, "isnowpre", kt, sprecip , jpi*jpj, (/1/) ) |
---|
373 | CALL histwrite( kid, "iicesali", kt, smt_i , jpi*jpj, (/1/) ) |
---|
374 | CALL histwrite( kid, "iicevolu", kt, vt_i , jpi*jpj, (/1/) ) |
---|
375 | CALL histwrite( kid, "iicedive", kt, divu_i*1.0e8 , jpi*jpj, (/1/) ) |
---|
376 | |
---|
377 | CALL histwrite( kid, "iicebopr", kt, diag_bot_gr , jpi*jpj, (/1/) ) |
---|
378 | CALL histwrite( kid, "iicedypr", kt, diag_dyn_gr , jpi*jpj, (/1/) ) |
---|
379 | CALL histwrite( kid, "iicelapr", kt, diag_lat_gr , jpi*jpj, (/1/) ) |
---|
380 | CALL histwrite( kid, "iicesipr", kt, diag_sni_gr , jpi*jpj, (/1/) ) |
---|
381 | CALL histwrite( kid, "iicerepr", kt, diag_res_pr , jpi*jpj, (/1/) ) |
---|
382 | CALL histwrite( kid, "iicebome", kt, diag_bot_me , jpi*jpj, (/1/) ) |
---|
383 | CALL histwrite( kid, "iicesume", kt, diag_sur_me , jpi*jpj, (/1/) ) |
---|
384 | CALL histwrite( kid, "iisfxthd", kt, sfx_thd , jpi*jpj, (/1/) ) |
---|
385 | CALL histwrite( kid, "iisfxmec", kt, sfx_mec , jpi*jpj, (/1/) ) |
---|
386 | CALL histwrite( kid, "iisfxres", kt, sfx_res , jpi*jpj, (/1/) ) |
---|
387 | |
---|
388 | ! Close the file |
---|
389 | ! ----------------- |
---|
390 | CALL histclo( kid ) |
---|
391 | |
---|
392 | END SUBROUTINE lim_wri_state |
---|
393 | |
---|
394 | #else |
---|
395 | !!---------------------------------------------------------------------- |
---|
396 | !! Default option : Empty module NO LIM sea-ice model |
---|
397 | !!---------------------------------------------------------------------- |
---|
398 | CONTAINS |
---|
399 | SUBROUTINE lim_wri ! Empty routine |
---|
400 | END SUBROUTINE lim_wri |
---|
401 | #endif |
---|
402 | |
---|
403 | !!====================================================================== |
---|
404 | END MODULE limwri |
---|