source: branches/2017/dev_v3.20_2017_transport_max/SOURCES/source_3.20/ice_output.f @ 67

Last change on this file since 67 was 39, checked in by vancop, 7 years ago

add tank mass and salt balance

File size: 41.6 KB
Line 
1      SUBROUTINE ice_output(nlay_i,nlay_s)
2
3!=============================================================================!
4! ice_output : Creates and write in the ice output file
5! (c) Martin Vancoppenolle, Xavier Fettweis, UCL-ASTR, June 2007
6!=============================================================================!
7
8      INCLUDE 'type.com'
9      INCLUDE 'para.com'
10      INCLUDE 'const.com'
11      INCLUDE 'ice.com'
12      INCLUDE 'thermo.com'
13      INCLUDE 'bio.com'
14      INCLUDE 'forcing.com'
15      INCLUDE 'tank.com'
16
17      CHARACTER(len=10) :: 
18     &   filenc='ice.out.nc'
19      CHARACTER(len=1) ::
20     &   c1
21      CHARACTER(len=4) ::
22     &   c4
23
24      REAL, DIMENSION(nend)     :: dimval
25      REAL, DIMENSION(nlay_i)   :: dimval2
26      REAL, DIMENSION(nlay_bio) :: dimval3
27      REAL, DIMENSION(nlay_s)   :: dimval4
28      REAL, DIMENSION(nlay_i)   :: dummy_vector
29
30!=============================================================================!
31
32      WRITE(numout,*) ' ice_output : '
33      WRITE(numout,*) ' ~~~~~~~~~~ : '
34      WRITE(numout,*)                    , c_bio_model
35!
36!-----------------------------------------------------------------------------!
37! 1) File definition
38!-----------------------------------------------------------------------------!
39!
40      IF ( numit .EQ. nstart ) THEN
41
42         WRITE(numout,*) ' Initialization of the NetCdf file : '
43         !---------------------
44         ! File initialization
45         !---------------------
46         CALL CF_INI_FILE(filenc,"Output NETCDF for LIM1D")
47
48         !---------------------
49         ! Dimensions creation
50         !---------------------
51         ! time
52         !------
53         DO i = nstart , nend
54            dimval(i) = REAL(i) 
55         ENDDO
56      !  WRITE(numout,*) ' dimval : ', ( dimval(i), i = nstart, nend )
57         IF ( ddtb .EQ. 60 ) 
58     &      CALL CF_CREATE_DIM("time"    ,"min"     ,nitrun,
59     &      dimval(nstart:nend))
60         IF ( ddtb .EQ. 600) 
61     &      CALL CF_CREATE_DIM("time"    ,"10min"     ,nitrun,
62     &      dimval(nstart:nend))
63         IF ( ddtb .EQ. 3600 ) 
64     &      CALL CF_CREATE_DIM("time"    ,"hours"     ,nitrun,
65     &      dimval(nstart:nend))
66         IF ( ddtb .EQ. 86400 ) 
67     &      CALL CF_CREATE_DIM("time"    ,"days"     ,nitrun,
68     &      dimval(nstart:nend))
69         IF ( ddtb .EQ. 21600 ) 
70     &      CALL CF_CREATE_DIM("time"    ,"6h"      ,nitrun,
71     &      dimval(nstart:nend))
72         WRITE(numout,*) ' time dimension created '
73
74         ! snow vertical coordinate (moving)
75         !-----------------------------------
76         DO i = 1, nlay_s
77            dimval4(i) = REAL(i)
78         ENDDO
79         CALL CF_CREATE_DIM("z_s_p"   ,"m"       ,nlay_s,
80     &   dimval4(1:nlay_s))
81         WRITE(numout,*) ' z_s_p dimension created '
82
83         ! physical vertical coordinate (moving)
84         !---------------------------------------
85         DO i = 1, nlay_i
86            dimval2(i) = REAL(i)
87         ENDDO
88         CALL CF_CREATE_DIM("z_i_p"   ,"m"       ,nlay_i,
89     &   dimval2(1:nlay_i))
90         WRITE(numout,*) ' z_i_p dimension created '
91
92!        ! biological vertical coordinate (moving)
93!        !-----------------------------------------
94         DO i = 1, nlay_bio 
95            dimval3(i) = REAL(i)
96         ENDDO
97         CALL CF_CREATE_DIM("z_i_b"   ,"m"       ,nlay_bio,
98     &   dimval3(1:nlay_bio))
99         WRITE(numout,*) ' z_i_b dimension created '
100
101         !--------------------
102         ! Variables creation
103         !--------------------
104         ! Times
105         !-------
106         CALL CF_CREATE_VAR("numt","Time step",
107     .                   "nts","time","-","-","-" )
108
109         CALL CF_CREATE_VAR("doy","Day Of Year",
110     .                   "nts","time","-","-","-" )
111
112         CALL CF_CREATE_VAR("ts_m","Time step in months",
113     .                   "mon","time","-","-","-" )
114
115         CALL CF_CREATE_VAR("ts_d","Time step in days",
116     .                   "y","time","-","-","-" )
117
118         ! Grids
119         !-------
120         CALL CF_CREATE_VAR("z_ip","Vertical cote, physics",
121     .                   "m","time","z_i_p","-","-" )
122
123         CALL CF_CREATE_VAR("z_ib","Vertical cote, biology",
124     .                   "m","time","z_i_b","-","-" )
125
126         IF ( ( c_grid .EQ. 'SL' ) .OR. ( c_grid .EQ. 'BA' ) ) 
127     &      CALL CF_CREATE_VAR("hbio","Biologically active layer",
128     &                   "m","time","-","-","-" )
129       
130
131         ! Ice / snow thickness and variations
132         !-------------------------------------
133         CALL CF_CREATE_VAR("h_i","Ice thickness",
134     .                   "m","time","-","-","-" )
135         WRITE(numout,*) ' h_i dimension created '
136
137         CALL CF_CREATE_VAR("dhib","Bottom accretion",
138     .                   "cm/day","time","-","-","-" )
139
140         CALL CF_CREATE_VAR("dhisu","Surface ice melt",
141     .                   "cm/day","time","-","-","-" )
142
143         CALL CF_CREATE_VAR("dhisi","Snow ice formation",
144     .                   "cm/day","time","-","-","-" )
145
146         CALL CF_CREATE_VAR("dhs","Snow variations",
147     .                   "cm/day","time","-","-","-" )
148
149         CALL CF_CREATE_VAR("h_s","Snow depth   ",
150     .                   "m","time","-","-","-" )
151         WRITE(numout,*) ' h_s dimension created '
152
153         CALL CF_CREATE_VAR("uml","Surface ocean layer",
154     .                   "m","time","-","-","-" )
155         WRITE(numout,*) ' uml dimension created '
156
157         ! Inner ice variables 
158         !---------------------
159         CALL CF_CREATE_VAR("t_i","Ice Temperature",
160     .                   "C","time","z_i_p","-","-" )
161         WRITE(numout,*) ' t_i dimension created '
162
163         CALL CF_CREATE_VAR("s_i","Ice Salinity",
164     .                   "g/kg","time","z_i_p","-","-" )
165         WRITE(numout,*) ' s_i dimension created '
166
167         CALL CF_CREATE_VAR("e_i","Brine volume",
168     .                   "%","time","z_i_p","-","-" )
169         WRITE(numout,*) ' e_i dimension created '
170
171         CALL CF_CREATE_VAR("e_i_bio","Brine volume bio",
172     .                   "%","time","z_i_p","-","-" )
173         WRITE(numout,*) ' e_i_bio dimension created '
174
175         CALL CF_CREATE_VAR("t_i_bio","Temperature bio",
176     .                   "C","time","z_i_p","-","-" )
177         WRITE(numout,*) ' t_i_bio dimension created '
178
179         CALL CF_CREATE_VAR("s_i_bio","Salinity bio",
180     .                   "g/kg","time","z_i_p","-","-" )
181         WRITE(numout,*) ' s_i_bio dimension created '
182
183         CALL CF_CREATE_VAR("sbr_bio","Sbr bio",
184     .                   "g/kg","time","z_i_p","-","-" )
185         WRITE(numout,*) ' sbr_bio dimension created '
186
187         CALL CF_CREATE_VAR("ra","Rayleigh number",
188     .                   "-","time","z_i_p","-","-" )
189         WRITE(numout,*) ' Ra dimension created '
190
191         CALL CF_CREATE_VAR("diff","Salt diffusivity", 
192     .                   "m2/s","time","z_i_p","-","-" )
193         WRITE(numout,*) ' Diff dimension created '
194
195         CALL CF_CREATE_VAR("perm_eff","Effective permeability", 
196     .                   "m2","time","z_i_p","-","-" )
197         WRITE(numout,*) ' perm_eff dimension created '
198
199         CALL CF_CREATE_VAR("w_adv_br","Upwelling Darcy velocity",
200     .                   "m/s","time","z_i_p","-","-" )
201         WRITE(numout,*) ' w_adv_br dimension created '
202
203      ! fsupw2 upwelling salt flux into layer k
204      ! fsupw1 upwelling salt flux from layer k into layer k-1
205      ! fsdwn  downwelling salt flux from layer k (brine channels)
206      ! dzdsdt = rate of change in salt content
207
208         CALL CF_CREATE_VAR("fsupw2","Salt flux from lower layer",
209     .                   "g/kg.m/s","time","z_i_p","-","-" )
210         WRITE(numout,*) ' fsupw2 dimension created '
211
212         CALL CF_CREATE_VAR("fsupw1","Salt flux to upper layer",
213     .                   "g/kg.m/s","time","z_i_p","-","-" )
214         WRITE(numout,*) ' fsupw1 dimension created '
215
216         CALL CF_CREATE_VAR("fsdwn","Salt flux into channels",
217     .                   "g/kg.m/s","time","z_i_p","-","-" )
218         WRITE(numout,*) ' fsdwn dimension created '
219
220         CALL CF_CREATE_VAR("dzdsdt","Change in salt content",
221     .                   "g/kg.m/s","time","z_i_p","-","-" )
222         WRITE(numout,*) ' dzdsdt dimension created '
223
224         CALL CF_CREATE_VAR("t_s","Snow Temperature",
225     .                   "C","time","z_s_p","-","-" )
226         WRITE(numout,*) ' t_s dimension created '
227
228         CALL CF_CREATE_VAR("t_su","Surface Temperature",
229     .                   "C","time","-","-","-" )
230         WRITE(numout,*) ' t_su dimension created '
231
232         CALL CF_CREATE_VAR("fsb","Ice-ocean bd salt flux",
233     .                   "kgNaCl/m2/s","time","-","-","-" )
234         WRITE(numout,*) ' fsb  dimension created '
235
236         CALL CF_CREATE_VAR("fsbp","Ice-ocean se salt flux",
237     .                   "kgNaCl/m2/s","time","-","-","-" )
238         WRITE(numout,*) ' fsbp dimension created '
239
240         CALL CF_CREATE_VAR("s_w","Water Salinity",
241     .                   "g/kg","time","-","-","-" )
242         WRITE(numout,*) ' s_w dimension created '
243
244         CALL CF_CREATE_VAR("v_w","Water Volume",
245     .                   "m3","time","-","-","-" )
246         WRITE(numout,*) ' v_w dimension created '
247
248         ! Forcing
249         !---------
250         CALL CF_CREATE_VAR("albe","Surface albedo",
251     .                   "/","time","-","-","-" )
252         CALL CF_CREATE_VAR("F_sw","Incoming solar",
253     .                   "W.m-2","time","-","-","-" )
254         CALL CF_CREATE_VAR("Fswn","Net solar",
255     .                   "W.m-2","time","-","-","-" )
256         CALL CF_CREATE_VAR("Flwd","Incoming longwave",
257     .                   "W.m-2","time","-","-","-" )
258         CALL CF_CREATE_VAR("Flwu","Emitted longwave",
259     .                   "W.m-2","time","-","-","-" )
260         CALL CF_CREATE_VAR("F_sh","Sensible heat flux",
261     .                   "W.m-2","time","-","-","-" )
262         CALL CF_CREATE_VAR("F_lh","Latent heat flux",
263     .                   "W.m-2","time","-","-","-" )
264         CALL CF_CREATE_VAR("Tair","Air temperature ",
265     .                   "C","time","-","-","-" )
266         CALL CF_CREATE_VAR("qair","Air humidity    ",
267     .                   "kg/kg","time","-","-","-" )
268         CALL CF_CREATE_VAR("wspd","Wind speed",
269     .                   "m/s","time","-","-","-" )
270         CALL CF_CREATE_VAR("qsfc","Surface humidity", 
271     .                   "kg/kg","time","-","-","-" )
272         CALL CF_CREATE_VAR("tdew","Relative air humidity", 
273     .                   "%","time","-","-","-" )
274         CALL CF_CREATE_VAR("cldf","Cloud fraction",
275     .                   "0-1","time","-","-","-" )
276         CALL CF_CREATE_VAR("sfal","Snowfall rate",
277     .                   "m/s","time","-","-","-" )
278         CALL CF_CREATE_VAR("pres","Atmospheric pressure", 
279     .                   "Pa","time","-","-","-" )
280
281         ! Radiative transfer
282         !--------------------
283         CALL CF_CREATE_VAR("T_is","Transmitted rad flx through ice",
284     .                   "W.m-2","time","-","-","-" )
285
286         CALL CF_CREATE_VAR("T_oc","Transmitted rad flux to ocean",
287     .                   "W.m-2","time","-","-","-" )
288
289         CALL CF_CREATE_VAR("A_s","Absorbed rad flux by snow",
290     .                   "W.m-2","time","z_s_p","-","-" )
291
292         CALL CF_CREATE_VAR("A_ib","Absorbed rad in ice by algae",
293     .                   "W.m-2","time","z_i_p","-","-" )
294
295         CALL CF_CREATE_VAR("A_ip","Absorbed rad in ice physically",
296     .                   "W.m-2","time","z_i_p","-","-" )
297
298         IF ( c_bio_model .EQ. 'KRILL' ) THEN
299
300         ! Biological variables
301         !----------------------
302         DO jn = 1, ntra_bio
303
304         IF ( flag_diff(jn) .AND. flag_active(jn) ) THEN
305         WRITE(numout,*) ' Tracer number : ', jn
306         CALL CF_CREATE_VAR(TRIM(biotr_i_nam(jn))//"d",
307     &        "Brine cc., "//TRIM(biotr_i_nam(jn)),
308     &        TRIM(biotr_i_uni(jn)),"time","z_i_b","-","-" )
309         WRITE(numout,*) ' Brine tracer conc created ', 
310     &   TRIM(biotr_i_nam(jn))//"d"
311         ENDIF
312
313         IF ( flag_active(jn) ) THEN
314         WRITE(numout,*) ' Tracer number : ', jn
315         CALL CF_CREATE_VAR(TRIM(biotr_i_nam(jn))//"b",
316     &        "Bulk cc., "//TRIM(biotr_i_nam(jn)),
317     &        TRIM(biotr_i_uni(jn)),"time","z_i_b","-","-" )
318         WRITE(numout,*) ' Brine tracer conc created ',
319     &   TRIM(biotr_i_nam(jn))//"b"
320         ENDIF
321
322         IF ( flag_active(jn) ) THEN
323         WRITE(numout,*) ' Tracer number : ', jn
324         CALL CF_CREATE_VAR(TRIM(biotr_i_nam(jn))//"t",
325     &        "Total content, "//TRIM(biotr_i_nam(jn)),
326     &        TRIM(biotr_i_uni(jn))//".m","time","-","-","-" )
327         WRITE(numout,*) ' Total tracer content created ',
328     &   TRIM(biotr_i_nam(jn))//"t"
329         ENDIF
330
331         IF ( flag_active(jn) ) THEN
332         WRITE(numout,*) ' Tracer number : ', jn
333         CALL CF_CREATE_VAR(TRIM(biotr_i_nam(jn))//"w",
334     &        "UML cc., "//TRIM(biotr_i_nam(jn)),
335     &        TRIM(biotr_i_uni(jn))//"m","time","-","-","-" )
336         WRITE(numout,*) ' UML tracer cc. created ',
337     &   TRIM(biotr_i_nam(jn))//"w"
338         ENDIF
339
340         IF ( flag_active(jn) ) THEN
341         WRITE(numout,*) ' Tracer number : ', jn
342         CALL CF_CREATE_VAR("F"//TRIM(biotr_i_nam(jn)),
343     &        "Ice-ocean "//TRIM(biotr_i_nam(jn))//" diffusive flux",
344     &        TRIM(biotr_i_uni(jn))//".m/s","time","-","-","-")
345         WRITE(numout,*) ' Tracer flux dimension created ',
346     &   TRIM(biotr_i_nam(jn))//"t"
347         ENDIF
348
349         IF ( flag_active(jn) ) THEN
350         WRITE(numout,*) ' Tracer number : ', jn
351         CALL CF_CREATE_VAR("F"//TRIM(biotr_i_nam(jn))//"b",
352     &        "Ice-ocean "//TRIM(biotr_i_nam(jn))//" basal flux",
353     &        TRIM(biotr_i_uni(jn))//".m/s","time","-","-","-")
354         WRITE(numout,*) ' Tracer flux dimension created ',
355     &   TRIM(biotr_i_nam(jn))//"t"
356         ENDIF
357
358         IF ( flag_active(jn) ) THEN
359         WRITE(numout,*) ' Tracer number : ', jn
360         CALL CF_CREATE_VAR("F"//TRIM(biotr_i_nam(jn))//"si",
361     &        "Ice-ocean "//TRIM(biotr_i_nam(jn))//" snow ice flux",
362     &        TRIM(biotr_i_uni(jn))//".m/s","time","-","-","-")
363         WRITE(numout,*) ' Tracer flux dimension created ',
364     &   TRIM(biotr_i_nam(jn))//"t"
365         ENDIF
366
367         IF ( flag_active(jn) ) THEN
368         WRITE(numout,*) ' Tracer number : ', jn
369         CALL CF_CREATE_VAR("F"//TRIM(biotr_i_nam(jn))//"bmax",
370     &        "Ice-ocean "//TRIM(biotr_i_nam(jn))//" maximal flux",
371     &        TRIM(biotr_i_uni(jn))//".m/s","time","-","-","-")
372         WRITE(numout,*) ' Tracer flux dimension created ',
373     &   TRIM(biotr_i_nam(jn))//"t"
374         ENDIF
375
376         ! Gas flux
377         IF ( flag_active(jn) .AND. ( biotr_i_typ(jn) .EQ. 'gas' ) )
378     &   THEN
379
380         WRITE(numout,*) ' Tracer number : ', jn
381         CALL CF_CREATE_VAR(TRIM(biotr_i_nam(jn))//"bub",
382     &        "Bubble cc., "//biotr_i_nam(jn),
383     &        TRIM(biotr_i_uni(jn)),"time","z_i_b","-","-" )
384         WRITE(numout,*) ' Bubble concentration dimension created ',
385     &   TRIM(biotr_i_nam(jn))//"bu_bub"
386
387         WRITE(numout,*) ' Tracer number : ', jn
388         CALL CF_CREATE_VAR("F"//TRIM(biotr_i_nam(jn))//"_atm",
389     &        "Ice-atmos "//TRIM(biotr_i_nam(jn))//" diffusive flux",
390     &        biotr_i_uni(jn)//"/m2/s","time","-","-","-")
391         WRITE(numout,*) ' Tracer gas flux dimension created ',
392     &   TRIM(biotr_i_nam(jn))//"flux"
393     
394         WRITE(numout,*) ' Tracer number : ', jn
395         CALL CF_CREATE_VAR("F"//TRIM(biotr_i_nam(jn))//"_bub",
396     &        "Ice-atmos, "//TRIM(biotr_i_nam(jn))//" bubble flux",
397     &        TRIM(biotr_i_uni(jn))//"/m2/s","time","-","-","-")
398         WRITE(numout,*) 'Surface bubble flux dimension created ',
399     &   TRIM(biotr_i_nam(jn))//"bub_flux"
400
401         WRITE(numout,*) ' Tracer number : ', jn
402         CALL CF_CREATE_VAR(TRIM(biotr_i_nam(jn))//"_trvel",
403     &        "Ice-atmos "//TRIM(biotr_i_nam(jn))//" transfer velocity",
404     &        TRIM(biotr_i_uni(jn))//"m/s","time","-","-","-")
405         WRITE(numout,*) ' At-ice gas transfer vel. dimension created ',
406     &   TRIM(biotr_i_nam(jn))//"_trvel"
407
408         WRITE(numout,*) ' Tracer number : ', jn
409         CALL CF_CREATE_VAR(TRIM(biotr_i_nam(jn))//"pc_sat",
410     &        "%sat, "//TRIM(biotr_i_nam(jn)),
411     &        TRIM(biotr_i_uni(jn)),"time","z_i_b","-","-" )
412         WRITE(numout,*) ' %sat dimension created ',
413     &   TRIM(biotr_i_nam(jn))//"pc_sat"
414
415         ENDIF ! gases
416
417         END DO ! jn
418
419         !------------------
420         ! Carbonate system
421         !------------------
422         IF ( ln_carbon ) THEN
423
424         CALL CF_CREATE_VAR("CO2aq", "Bulk aqueous CO2 concentration", 
425     .                   "mmol m-3","time","z_i_b","-","-" )
426         WRITE(numout,*) ' CO2aq created '
427
428         CALL CF_CREATE_VAR("CO32m", "Bulk CO32- concentration", 
429     .                   "mmol m-3","time","z_i_b","-","-" )
430         WRITE(numout,*) ' CO32m created '
431
432         CALL CF_CREATE_VAR("HCO3m", "Bulk HCO3m concentration", 
433     .                   "mmol m-3","time","z_i_b","-","-" )
434         WRITE(numout,*) ' HCO3m created '
435
436         CALL CF_CREATE_VAR("pH",    "Brine pH",
437     .                   "-","time","z_i_b","-","-" )
438         WRITE(numout,*) ' brine pH created'
439
440         CALL CF_CREATE_VAR("pCO2",  "Brine pCO2",
441     .                   "-","time","z_i_b","-","-" )
442         WRITE(numout,*) ' brine pCO2 created'
443
444         ENDIF
445
446
447         ! Chlorophyll a
448         CALL CF_CREATE_VAR("Chla_bio", "Chlorophyll a on bio grid",
449     &        "mmol.m-3","time","z_i_b","-","-")
450         WRITE(numout,*) ' Chla bio created '
451
452         ! Chlorophyll a
453         CALL CF_CREATE_VAR("ChlC_bio", "Chl/C",
454     &        "mmol.m-3","time","z_i_b","-","-")
455         WRITE(numout,*) ' ChlC_bio created '
456
457         CALL CF_CREATE_VAR("Chla_phy", "Chlorophyll a on phy grid",
458     &        "mmol.m-3","time","z_i_p","-","-" )
459         WRITE(numout,*) ' Chla phy created '
460
461         ! PAR
462         CALL CF_CREATE_VAR("PAR","PAR on phy grid - top of layers",
463     &                      "µE.m-2.s-1","time","z_i_p","-","-" )
464         WRITE(numout,*) ' PAR created '
465
466         ! PAR
467         CALL CF_CREATE_VAR("PAR_bio","PAR on bio grid - top of layers",
468     &                      "µE.m-2.s-1","time","z_i_b","-","-" )
469         WRITE(numout,*) ' PAR_BIO created '
470
471         ENDIF ! c_bio_model
472
473         IF ( c_bio_model .EQ. 'KRILL' ) THEN
474
475         IF ( ln_ikaite ) THEN
476         
477         CALL CF_CREATE_VAR("ika_rate","CaCO3 precip/dissol rate",
478     .                   "mmol CaCO3 m-3 s-1","time","z_i_b","-","-" )
479         WRITE(numout,*) ' CaCO3 precip/dissol rate created '
480
481         CALL CF_CREATE_VAR("ika_omega","CaCO3 saturation state",
482     .                   "-","time","z_i_b","-","-" )
483         WRITE(numout,*) ' CaCO3 saturation state created '
484
485         ENDIF
486
487         IF ( flag_active(4) ) THEN
488         ! Sources and sinks
489         CALL CF_CREATE_VAR("syn","Algal synthesis",
490     .                   "mmol C m-3 s-1","time","z_i_b","-","-" )
491         WRITE(numout,*) ' Algal growth created '
492
493         CALL CF_CREATE_VAR("rsp","Algal respiration",
494     .                   "mmol C m-3 s-1","time","z_i_b","-","-" )
495         WRITE(numout,*) ' Algal respiration created '
496
497         CALL CF_CREATE_VAR("lys","Algal lysis",
498     .                   "mmol C m-3 s-1","time","z_i_b","-","-" )
499         WRITE(numout,*) ' Algal lysis created '
500
501         CALL CF_CREATE_VAR("rem","Remineralization",
502     .                   "mmol C m-3 s-1","time","z_i_b","-","-" )
503         WRITE(numout,*) ' Remineralization created '
504
505         CALL CF_CREATE_VAR("lim_lig","Light limitation",
506     .                   "-","time","z_i_b","-","-" )
507         WRITE(numout,*) ' Light limitation created '
508
509         CALL CF_CREATE_VAR("lim_dsi","DSi limitation",
510     .                   "-","time","z_i_b","-","-" )
511         WRITE(numout,*) ' DSi limitation created '
512
513         CALL CF_CREATE_VAR("lim_no3","NO3 limitation",
514     .                   "-","time","z_i_b","-","-" )
515         WRITE(numout,*) ' NO3 limitation created '
516
517         CALL CF_CREATE_VAR("lim_po4","PO4 limitation",
518     .                   "-","time","z_i_b","-","-" )
519         WRITE(numout,*) ' NO3 limitation created '
520
521         CALL CF_CREATE_VAR("lim_tem","Temp limitation",
522     .                   "-","time","z_i_b","-","-" )
523         WRITE(numout,*) ' Temp limitation created '
524
525         CALL CF_CREATE_VAR("lim_sal","Sal limitation",
526     .                   "-","time","z_i_b","-","-" )
527         WRITE(numout,*) ' Sal limitation created '
528         
529         CALL CF_CREATE_VAR("divf_si","Flux divergence silicate",
530     .                   "mmol Si m-3 s-1","time","z_i_b","-","-" )
531         WRITE(numout,*) ' Flux divergence silicate created '
532
533         CALL CF_CREATE_VAR("divf_n","Flux divergence nitrate",
534     .                   "mmol N m-3 s-1","time","z_i_b","-","-" )
535         WRITE(numout,*) ' Flux divergence nitrate created '
536
537         ENDIF ! flag_active
538
539         ENDIF ! c_bio_model
540
541         !---------------
542         ! File creation
543         !---------------
544         CALL CF_CREATE_FILE(filenc)
545
546      ENDIF
547
548!
549!-----------------------------------------------------------------------------!
550! 2) Write in the netcdf
551!-----------------------------------------------------------------------------!
552!
553      WRITE(numout,*) ' Write into the NetCdf file '
554      ji = 1
555      !-----------
556      ! Open file
557      !-----------
558      CALL CF_OPEN  (filenc,id)
559      !-------------------
560      ! Write in the file
561      !-------------------
562      ! Time
563      !------
564      CALL CF_WRITE (filenc, 'numt', numit-nstart+1, 
565     &               1, 1, 1, REAL(numit))
566      CALL CF_WRITE (filenc, 'doy', numit-nstart+1, 
567     &               1, 1, 1, REAL(doy))
568      CALL CF_WRITE (filenc, 'ts_m', numit-nstart+1, 
569     &               1, 1, 1, REAL(numit)/86400.0*REAL(ddtb)/30.0)
570      CALL CF_WRITE (filenc, 'ts_d', numit-nstart+1, 
571     &               1, 1, 1, REAL(numit)/86400.*REAL(ddtb) )
572
573      ! Grids
574      !-------
575      ! vertical cotes, physical
576      DO layer = 1, nlay_i
577         dummy_vector(layer) = REAL( ht_i_b(ji) ) / REAL( nlay_i ) * 
578     &                       ( REAL( layer ) - 1./2. )
579      END DO
580      CALL CF_WRITE (filenc, 'z_ip', numit-nstart+1, nlay_i, 1, 1, 
581     &               dummy_vector )
582
583      ! vertical cotes, biological
584      DO layer = 1, nlay_bio
585         dummy_vector(layer) = REAL( z_i_bio(layer) )
586      END DO
587      CALL CF_WRITE (filenc, 'z_ib', numit-nstart+1, nlay_bio, 1, 1, 
588     &               dummy_vector )
589
590      IF ( ( c_grid .EQ. 'SL' ) .OR. ( c_grid .EQ. 'BA' ) ) 
591     &   CALL CF_WRITE (filenc, 'hbio ', numit-nstart+1, 
592     &               1, 1, 1, REAL(h_bio))
593
594      ! Ice / snow thickness and variations
595      !-------------------------------------
596      CALL CF_WRITE (filenc, 'h_i ', numit-nstart+1, 
597     &               1, 1, 1, REAL(ht_i_b(ji)))
598      CALL CF_WRITE (filenc, 'dhib', numit-nstart+1, 
599     &               1, 1, 1, 
600     &               REAL(dh_i_bott(ji) / ddtb * 86400.0 * 100.0) )
601      CALL CF_WRITE (filenc, 'dhisu', numit-nstart+1, 
602     &               1, 1, 1, 
603     &               REAL(dh_i_surf(ji) / ddtb * 86400.0 * 100.0) )
604      WRITE(numout,*) ' ice output, dh_snowice1: ', dh_snowice(ji)
605      CALL CF_WRITE (filenc, 'dhisi', numit-nstart+1, 
606     &               1, 1, 1, 
607     &               REAL(dh_snowice(ji) / ddtb * 86400.0 * 100.0) )
608      WRITE(numout,*) ' ice output, dh_snowice2: ', 
609     &               REAL(dh_snowice(ji) / ddtb * 86400.0 * 100.0)
610
611      CALL CF_WRITE (filenc, 'h_s ', numit-nstart+1, 
612     &               1, 1, 1, REAL(ht_s_b(ji)))
613      CALL CF_WRITE (filenc, 'dhs', numit-nstart+1, 
614     &               1, 1, 1, 
615     &               REAL(dh_s_tot(ji) / ddtb * 86400.0 * 100.0) )
616      CALL CF_WRITE (filenc, 'uml ', numit-nstart+1, 
617     &               1, 1, 1, REAL(ht_w_b(ji)))
618      CALL CF_WRITE (filenc, 't_su', numit-nstart+1, 
619     &               1, 1, 1, REAL(t_su_b(ji) - 
620     &               273.16) )
621      CALL CF_WRITE (filenc, 'fsb', numit-nstart+1, 
622     &               1, 1, 1, REAL(fsb) )
623      CALL CF_WRITE (filenc, 'fsbp', numit-nstart+1, 
624     &               1, 1, 1, REAL(fsbp) )
625
626      CALL CF_WRITE (filenc, 's_w', numit-nstart+1, 
627     &               1, 1, 1, REAL(s_w) )
628      CALL CF_WRITE (filenc, 'v_w', numit-nstart+1, 
629     &               1, 1, 1, REAL(v_w) )
630
631      ! Forcing
632      !---------
633      CALL CF_WRITE (filenc, 'Flwd', numit-nstart+1, 1, 1, 1, 
634     &               REAL( ratbqb(ji) ) )
635      CALL CF_WRITE (filenc, 'Flwu', numit-nstart+1, 1, 1, 1, 
636     &               - REAL(fratsb(ji) - ratbqb(ji)) )
637      CALL CF_WRITE (filenc, 'F_sw', numit-nstart+1, 1, 1, 1, 
638     &               REAL(fsolgb(ji) / ( 1.0 - albgb(ji) ) ) )
639      CALL CF_WRITE (filenc, 'Fswn', numit-nstart+1, 1, 1, 1, 
640     &               REAL(fsolgb(ji) ) )
641      CALL CF_WRITE (filenc, 'F_sh', numit-nstart+1, 1, 1, 1, 
642     &               REAL(fcsb(ji)) )
643      CALL CF_WRITE (filenc, 'F_lh', numit-nstart+1, 1, 1, 1, 
644     &               REAL(fleb(ji)) )
645      CALL CF_WRITE (filenc, 'albe', numit-nstart+1, 1, 1, 1, 
646     &               REAL(albgb(ji)) )
647
648      CALL CF_WRITE (filenc, 'Tair', numit-nstart+1, 1, 1, 1, 
649     &               REAL(tabqb(ji) - 273.15 ))
650      CALL CF_WRITE (filenc, 'qair', numit-nstart+1, 1, 1, 1, 
651     &               REAL(qabqb(ji)) )
652      CALL CF_WRITE (filenc, 'wspd', numit-nstart+1, 1, 1, 1, 
653     &               REAL(vabqb(ji)) )
654      CALL CF_WRITE (filenc, 'qsfc', numit-nstart+1, 1, 1, 1, 
655     &               REAL(qsfcb(ji)) )
656      CALL CF_WRITE (filenc, 'tdew', numit-nstart+1, 1, 1, 1, 
657     &               REAL(tdewb(ji))*100.0 )
658      CALL CF_WRITE (filenc, 'cldf', numit-nstart+1, 1, 1, 1, 
659     &               REAL(cldqb(ji)) )
660      CALL CF_WRITE (filenc, 'sfal', numit-nstart+1, 1, 1, 1, 
661     &               REAL(hnpbqb(ji)/ddtb) )
662      CALL CF_WRITE (filenc, 'pres', numit-nstart+1, 1, 1, 1, 
663     &               REAL(psbqb(ji)) )
664
665      ! Inner ice variables 
666      !---------------------
667      ! temperatures
668      DO layer = 1, nlay_i
669         dummy_vector(layer) = REAL(t_i_b(ji,layer) - 273.16 )
670      END DO
671      CALL CF_WRITE (filenc, 't_i ', numit-nstart+1, nlay_i, 1, 1, 
672     &               dummy_vector )
673
674      ! salinity
675      DO layer = 1, nlay_i
676         dummy_vector(layer) = REAL( s_i_b(ji,layer) )
677      END DO
678      CALL CF_WRITE (filenc, 's_i ', numit-nstart+1, nlay_i, 1, 1, 
679     &               dummy_vector )
680
681      ! brine volume
682      DO layer = 1, nlay_i
683         dummy_vector(layer) = REAL ( - tmut * s_i_b(ji,layer) / 
684     &                         ( t_i_b(ji,layer) - 273.16) ) * 100.0
685      END DO
686      CALL CF_WRITE (filenc, 'e_i ', numit-nstart+1, nlay_i, 1, 1, 
687     &               dummy_vector )
688
689      ! brine volume bio
690      DO layer = 1, nlay_bio
691         dummy_vector(layer) = REAL ( - tmut * s_i_bio(layer) / 
692     &                         ( t_i_bio(layer) - 273.16) ) * 100.0
693      END DO
694      CALL CF_WRITE (filenc, 'e_i_bio ', numit-nstart+1, nlay_bio, 1, 1, 
695     &               dummy_vector )
696     
697      ! temperature bio
698      DO layer = 1, nlay_bio
699         dummy_vector(layer) = t_i_bio(layer) - 273.16
700      END DO
701      CALL CF_WRITE (filenc, 't_i_bio ', numit-nstart+1, nlay_bio, 1, 1, 
702     &               dummy_vector )
703
704      ! brine volume bio
705      DO layer = 1, nlay_bio
706         dummy_vector(layer) = s_i_bio(layer)
707      END DO
708      CALL CF_WRITE (filenc, 's_i_bio ', numit-nstart+1, nlay_bio, 1, 1, 
709     &               dummy_vector )
710
711      ! brine salinity bio
712      DO layer = 1, nlay_bio
713!        dummy_vector(layer) = - ( t_i_bio(layer) - 273.16 ) / tmut
714         ztc = ( t_i_bio(layer) - 273.15 )
715         zt2 = ztc * ztc            ;   zt3 = zt2 * ztc
716         dummy_vector(layer) = -21.4*ztc -0.886*zt2 - 0.0170*zt3
717      END DO
718      CALL CF_WRITE (filenc, 'sbr_bio ', numit-nstart+1, nlay_bio, 1, 1, 
719     &               dummy_vector )
720
721      ! Rayleigh number
722      DO layer = 1, nlay_i
723         dummy_vector(layer) = rayleigh(layer)
724      END DO
725      CALL CF_WRITE (filenc, 'ra', numit-nstart+1, nlay_i, 1, 1, 
726     &               dummy_vector )
727     
728      ! Salt diffusivity in brine
729      DO layer = 1, nlay_i
730         dummy_vector(layer) = diff_br(layer)
731      END DO
732      CALL CF_WRITE (filenc, 'diff', numit-nstart+1, nlay_i, 1, 1, 
733     &               dummy_vector )
734
735      ! Effective permeability
736      DO layer = 1, nlay_i
737         dummy_vector(layer) = perm_eff(layer)
738      END DO
739      CALL CF_WRITE (filenc, 'perm_eff', numit-nstart+1, nlay_i, 1, 1, 
740     &               dummy_vector )
741
742      ! Advection velocity
743      DO layer = 1, nlay_i
744         dummy_vector(layer) = w_adv_br(layer)
745      END DO
746      CALL CF_WRITE (filenc, 'w_adv_br', numit-nstart+1, nlay_i, 1, 1, 
747     &               dummy_vector )
748
749      ! Upwelling salt flux from lower layer
750      DO layer = 1, nlay_i
751         dummy_vector(layer) = fsupw2(layer)
752      END DO
753      CALL CF_WRITE (filenc, 'fsupw2', numit-nstart+1, nlay_i, 1, 1, 
754     &               dummy_vector )
755
756      ! Upwelling salt flux to upper layer
757      DO layer = 1, nlay_i
758         dummy_vector(layer) = fsupw1(layer)
759      END DO
760      CALL CF_WRITE (filenc, 'fsupw1', numit-nstart+1, nlay_i, 1, 1, 
761     &               dummy_vector )
762
763      ! Downwelling salt flux into brine channels
764      DO layer = 1, nlay_i
765         dummy_vector(layer) = fsdwn(layer)
766      END DO
767      CALL CF_WRITE (filenc, 'fsdwn', numit-nstart+1, nlay_i, 1, 1, 
768     &               dummy_vector )
769
770      ! Change in salt content
771      DO layer = 1, nlay_i
772         dummy_vector(layer) = dzdsdt(layer)
773      END DO
774      CALL CF_WRITE (filenc, 'dzdsdt', numit-nstart+1, nlay_i, 1, 1, 
775     &               dummy_vector )
776
777      ! snow temperature
778      DO layer = 1, nlay_s
779         dummy_vector(layer) = REAL(t_s_b(ji,layer) - 273.16 )
780      END DO
781      CALL CF_WRITE (filenc, 't_s ', numit-nstart+1, nlay_s, 1, 1, 
782     &               dummy_vector )
783
784      ! Radiative transfer
785      !--------------------
786      ! Transmitted radiation in the ice
787      CALL CF_WRITE (filenc, 'T_is', numit-nstart+1, 
788     &               1, 1, 1, REAL(ftrice) )
789      CALL CF_WRITE (filenc, 'T_oc', numit-nstart+1, 
790     &               1, 1, 1, REAL(ftroce) )
791      ! Absorbed radiation in snow, physically
792      DO layer = 1, nlay_s
793         dummy_vector(layer) = REAL(radab_s(layer))
794      END DO
795      CALL CF_WRITE (filenc, 'A_s', numit-nstart+1, nlay_s, 1, 1, 
796     &               dummy_vector )
797      ! Absorbed radiation in ice, physically
798      DO layer = 1, nlay_i
799         dummy_vector(layer) = REAL(radab_phy_i(layer))
800      END DO
801      CALL CF_WRITE (filenc, 'A_ip', numit-nstart+1, nlay_i, 1, 1, 
802     &               dummy_vector )
803      ! Absorbed radiation in ice, biologically
804      DO layer = 1, nlay_i
805         dummy_vector(layer) = REAL(radab_alg_i(layer))
806      END DO
807      CALL CF_WRITE (filenc, 'A_ib', numit-nstart+1, nlay_i, 1, 1, 
808     &               dummy_vector )
809
810      IF ( c_bio_model .EQ. 'KRILL' ) THEN 
811
812      ! Biological variables 
813      !----------------------
814      ! tracer brine concentration
815      DO jn = 1, ntra_bio
816
817         ! tracer brine concentration
818         IF ( flag_diff(jn) .AND. flag_active(jn) ) THEN
819            DO layer = 1, nlay_bio
820               dummy_vector(layer) = REAL( c_i_bio(jn,layer) )
821            END DO
822            WRITE(numout,*) ' Tracer number : ', jn
823            WRITE(numout,*) ' dummy_vector : ', 
824     &                      ( dummy_vector(layer), layer = 1, nlay_bio )
825            CALL CF_WRITE (filenc, TRIM(biotr_i_nam(jn))//"d", 
826     &                     numit-nstart+1, nlay_bio, 1, 1, 
827     &                     dummy_vector )
828         ENDIF
829
830         ! tracer bulk ice concentration
831         IF ( flag_active(jn) ) THEN
832         DO layer = 1, nlay_bio
833            dummy_vector(layer) = REAL( cbu_i_bio(jn,layer) )
834         END DO
835
836         WRITE(numout,*) ' Tracer number : ', jn
837         WRITE(numout,*) ' dummy_vector : ', 
838     &                   ( dummy_vector(layer), layer = 1, nlay_bio )
839
840         CALL CF_WRITE (filenc, TRIM(biotr_i_nam(jn))//"b", 
841     &                  numit-nstart+1, nlay_bio, 1, 1, 
842     &                  dummy_vector )
843
844         WRITE(numout,*) ' Tracer number : ', jn
845         WRITE(numout,*) ' dummy_vector : ', 
846     &                   REAL( ct_i_bio(jn) )
847
848         CALL CF_WRITE (filenc, TRIM(biotr_i_nam(jn))//"t",
849     &                  numit-nstart+1, 1, 1, 1, 
850     &                  REAL( ct_i_bio(jn) ) )
851     
852         WRITE(numout,*) ' Tracer number : ', jn
853         WRITE(numout,*) ' dummy_vector : ', 
854     &                   REAL( c_w_bio(jn) )
855
856         CALL CF_WRITE (filenc, TRIM(biotr_i_nam(jn))//"w",
857     &                  numit-nstart+1, 1, 1, 1, 
858     &                  REAL( c_w_bio(jn) ) )
859
860         WRITE(numout,*) ' Tracer number : ', jn
861         WRITE(numout,*) ' dummy_vector : ', 
862     &                   REAL( fcb(jn) )
863
864         CALL CF_WRITE (filenc, "F"//TRIM(biotr_i_nam(jn)),
865     &                  numit-nstart+1, 1, 1, 1, 
866     &                  REAL( fcb(jn) ) )
867
868         WRITE(numout,*) ' Tracer number : ', jn
869         WRITE(numout,*) ' dummy_vector : ', 
870     &                   REAL( fcbp(jn) )
871
872         CALL CF_WRITE (filenc, "F"//TRIM(biotr_i_nam(jn))//"b",
873     &                  numit-nstart+1, 1, 1, 1, 
874     &                  REAL( fcbp(jn) ) )
875
876         WRITE(numout,*) ' Tracer number : ', jn
877         WRITE(numout,*) ' dummy_vector : ', 
878     &                   REAL( fcsi(jn) )
879
880         CALL CF_WRITE (filenc, "F"//TRIM(biotr_i_nam(jn))//"si",
881     &                  numit-nstart+1, 1, 1, 1, 
882     &                  REAL( fcsi(jn) ) )
883
884         WRITE(numout,*) ' Tracer number : ', jn
885         WRITE(numout,*) ' dummy_vector : ', 
886     &                   REAL( fcb_max(jn) )
887
888         CALL CF_WRITE (filenc, "F"//TRIM(biotr_i_nam(jn))//"bmax",
889     &                  numit-nstart+1, 1, 1, 1, 
890     &                  REAL( fcb_max(jn) ) )
891
892         IF ( biotr_i_typ(jn) .EQ. 'gas' ) THEN
893            WRITE(numout,*) ' GAS '
894            WRITE(numout,*) ' Tracer number : ', jn
895            WRITE(numout,*) ' dummy_vector : ', 
896     &                      REAL( fgas(jn) )
897
898            CALL CF_WRITE (filenc, "F"//TRIM(biotr_i_nam(jn))//"_atm",
899     &                     numit-nstart+1, 1, 1, 1, 
900     &                     REAL( fgas(jn) ) )
901
902            DO layer = 1, nlay_bio
903               dummy_vector(layer) = REAL( cbub_i_bio(jn,layer) )
904            END DO
905            WRITE(numout,*) ' Tracer number : ', jn
906            WRITE(numout,*) ' dummy_vector : ', 
907     &                      ( dummy_vector(layer), layer = 1, nlay_bio )
908            CALL CF_WRITE (filenc, TRIM(biotr_i_nam(jn))//"bub", 
909     &                     numit-nstart+1, nlay_bio, 1, 1, 
910     &                     dummy_vector )
911     
912            DO layer = 1, nlay_bio
913               dummy_vector(layer) = REAL( pc_sat(jn,layer) )
914            END DO
915            WRITE(numout,*) ' Tracer number : ', jn
916            WRITE(numout,*) ' dummy_vector : ', 
917     &                      ( dummy_vector(layer), layer = 1, nlay_bio )
918            CALL CF_WRITE (filenc, TRIM(biotr_i_nam(jn))//"pc_sat", 
919     &                     numit-nstart+1, nlay_bio, 1, 1, 
920     &                     dummy_vector )
921
922            WRITE(numout,*) ' GAS '
923            WRITE(numout,*) ' Tracer number : ', jn
924            WRITE(numout,*) ' dummy_vector : ', 
925     &                      REAL( f_bub(jn) )
926
927            CALL CF_WRITE (filenc, "F"//TRIM(biotr_i_nam(jn))//"_bub",
928     &                     numit-nstart+1, 1, 1, 1, 
929     &                     REAL( f_bub(jn) ) )
930
931            WRITE(numout,*) ' GAS '
932            WRITE(numout,*) ' Tracer number : ', jn
933            WRITE(numout,*) ' dummy_vector : ', 
934     &                      REAL( gas_trvel(jn) )
935
936            CALL CF_WRITE (filenc, TRIM(biotr_i_nam(jn))//"_trvel",
937     &                     numit-nstart+1, 1, 1, 1, 
938     &                     REAL( gas_trvel(jn) ) )
939
940         ENDIF ! biotr_i_typ
941
942         ENDIF ! flag_active
943      END DO ! jn
944
945      !------------------
946      ! Carbonate system
947      !------------------
948      IF ( ln_carbon ) THEN
949
950         DO layer = 1, nlay_bio
951            dummy_vector(layer) = REAL(CO2aq(layer))
952         END DO
953         CALL CF_WRITE (filenc, 'CO2aq', numit-nstart+1, nlay_i, 1, 1,
954     &                  dummy_vector )
955
956         DO layer = 1, nlay_bio
957            dummy_vector(layer) = REAL(CO32m(layer))
958         END DO
959         CALL CF_WRITE (filenc, 'CO32m', numit-nstart+1, nlay_i, 1, 1,
960     &                  dummy_vector )
961
962         DO layer = 1, nlay_bio
963            dummy_vector(layer) = REAL(HCO3m(layer))
964         END DO
965         CALL CF_WRITE (filenc, 'HCO3m', numit-nstart+1, nlay_i, 1, 1,
966     &                  dummy_vector )
967
968         DO layer = 1, nlay_bio
969            dummy_vector(layer) = REAL(pH(layer))
970         END DO
971         CALL CF_WRITE (filenc, 'pH', numit-nstart+1, nlay_i, 1, 1,
972     &                  dummy_vector )
973
974         DO layer = 1, nlay_bio
975            dummy_vector(layer) = REAL(pCO2(layer))
976         END DO
977         CALL CF_WRITE (filenc, 'pCO2', numit-nstart+1, nlay_i, 1, 1,
978     &                  dummy_vector )
979
980      ENDIF
981
982      ! Chla, physical grid
983      DO layer = 1, nlay_i
984         dummy_vector(layer) = REAL(chla_i(layer))
985      END DO
986      CALL CF_WRITE (filenc, 'Chla_phy', numit-nstart+1, nlay_i, 1, 1, 
987     &               dummy_vector )
988
989      ! ChlC_bio           
990      DO layer = 1, nlay_bio
991         dummy_vector(layer) = REAL(ChlC_bio(layer))
992      END DO
993      CALL CF_WRITE (filenc, 'ChlC_bio', numit-nstart+1, nlay_i, 1, 1, 
994     &               dummy_vector )
995
996      ! Chla, biological grid
997      DO layer = 1, nlay_bio
998         dummy_vector(layer) = REAL(chla_i_bio(layer))
999      END DO
1000      CALL CF_WRITE (filenc, 'Chla_bio', numit-nstart+1, nlay_bio, 1, 1,
1001     &               dummy_vector )
1002
1003      ! PAR
1004      DO layer = 1, nlay_i
1005         dummy_vector(layer) = REAL(par(layer))
1006      END DO
1007      CALL CF_WRITE (filenc, 'PAR', numit-nstart+1, nlay_i, 1, 1, 
1008     &               dummy_vector )
1009
1010      ! PAR_bio
1011      DO layer = 1, nlay_bio
1012         dummy_vector(layer) = REAL(par_bio(layer))
1013      END DO
1014      CALL CF_WRITE (filenc, 'PAR_bio', numit-nstart+1, nlay_bio, 1, 1, 
1015     &               dummy_vector )
1016
1017      ENDIF
1018
1019
1020      IF ( c_bio_model .EQ. 'KRILL' ) THEN
1021
1022      !-------------------
1023      ! Sources and sinks
1024      !-------------------
1025     
1026      IF ( ln_ikaite ) THEN
1027
1028      ! CaCO3 precipitation / dissolution rate
1029      DO layer = 1, nlay_bio
1030         dummy_vector(layer) = REAL(ika_rate(layer))
1031      END DO
1032      CALL CF_WRITE (filenc, 'ika_rate', numit-nstart+1, nlay_bio, 1,1, 
1033     &               dummy_vector )
1034
1035      ! CaCO3 saturation state
1036      DO layer = 1, nlay_bio
1037         dummy_vector(layer) = REAL(ika_omega(layer))
1038      END DO
1039      CALL CF_WRITE (filenc, 'ika_omega', numit-nstart+1, nlay_bio, 1,1,
1040     &               dummy_vector )
1041
1042      ENDIF ! ln_ikaite
1043
1044      IF ( flag_active(4) ) THEN
1045
1046      ! synthesis
1047      DO layer = 1, nlay_bio
1048         dummy_vector(layer) = REAL(syn_bio(layer))
1049      END DO
1050      CALL CF_WRITE (filenc, 'syn', numit-nstart+1, nlay_bio, 1, 1, 
1051     &               dummy_vector )
1052
1053      ! respiration
1054      DO layer = 1, nlay_bio
1055         dummy_vector(layer) = REAL(rsp_bio(layer))
1056      END DO
1057      CALL CF_WRITE (filenc, 'rsp', numit-nstart+1, nlay_bio, 1, 1, 
1058     &               dummy_vector )
1059
1060      ! lysis
1061      DO layer = 1, nlay_bio
1062         dummy_vector(layer) = REAL(lys_bio(layer))
1063      END DO
1064      CALL CF_WRITE (filenc, 'lys', numit-nstart+1, nlay_bio, 1, 1, 
1065     &               dummy_vector )
1066
1067      ! remineralization
1068      DO layer = 1, nlay_bio
1069         dummy_vector(layer) = REAL(rem_bio(layer))
1070      END DO
1071      CALL CF_WRITE (filenc, 'rem', numit-nstart+1, nlay_bio, 1, 1, 
1072     &               dummy_vector )
1073
1074      ! Light limitation
1075      DO layer = 1, nlay_bio
1076         dummy_vector(layer) = REAL(lim_lig(layer))
1077      END DO
1078      CALL CF_WRITE (filenc, 'lim_lig', numit-nstart+1, nlay_bio, 1, 1, 
1079     &               dummy_vector )
1080
1081      ! DSi limitation
1082      DO layer = 1, nlay_bio
1083         dummy_vector(layer) = REAL(lim_dsi(layer))
1084      END DO
1085      CALL CF_WRITE (filenc, 'lim_dsi', numit-nstart+1, nlay_bio, 1, 1, 
1086     &               dummy_vector )
1087
1088      ! NO3 limitation
1089      DO layer = 1, nlay_bio
1090         dummy_vector(layer) = REAL(lim_no3(layer))
1091      END DO
1092      CALL CF_WRITE (filenc, 'lim_no3', numit-nstart+1, nlay_bio, 1, 1, 
1093     &               dummy_vector )
1094
1095      ! PO4 limitation
1096      DO layer = 1, nlay_bio
1097         dummy_vector(layer) = REAL(lim_po4(layer))
1098      END DO
1099      CALL CF_WRITE (filenc, 'lim_po4', numit-nstart+1, nlay_bio, 1, 1, 
1100     &               dummy_vector )
1101
1102      ! Temperature limitation
1103      DO layer = 1, nlay_bio
1104         dummy_vector(layer) = REAL(lim_tem(layer))
1105      END DO
1106      CALL CF_WRITE (filenc, 'lim_tem', numit-nstart+1, nlay_bio, 1, 1, 
1107     &               dummy_vector )
1108
1109      ! Salinity limitation
1110      DO layer = 1, nlay_bio
1111         dummy_vector(layer) = REAL(lim_sal(layer))
1112      END DO
1113      CALL CF_WRITE (filenc, 'lim_sal', numit-nstart+1, nlay_bio, 1, 1, 
1114     &               dummy_vector )
1115
1116      ! Flux divergence, silicate
1117      DO layer = 1, nlay_bio
1118         dummy_vector(layer) = REAL(diag_divf_bio(1,layer))
1119      END DO
1120      CALL CF_WRITE (filenc, 'divf_si', numit-nstart+1, nlay_bio, 1, 1, 
1121     &               dummy_vector )
1122
1123      ! Flux divergence, nitrate
1124      DO layer = 1, nlay_bio
1125         dummy_vector(layer) = REAL(diag_divf_bio(7,layer))
1126      END DO
1127      CALL CF_WRITE (filenc, 'divf_n', numit-nstart+1, nlay_bio, 1, 1, 
1128     &               dummy_vector )
1129
1130      ENDIF ! flag_active
1131
1132      ENDIF ! c_bio_model
1133
1134      !------------
1135      ! Close file
1136      !------------
1137      CALL CF_CLOSE (filenc)
1138!
1139!-----------------------------------------------------------------------------!
1140!
1141      WRITE(numout,*) 
1142
1143      END SUBROUTINE
Note: See TracBrowser for help on using the repository browser.