source: branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/ice_output.f @ 24

Last change on this file since 24 was 20, checked in by vancop, 8 years ago

Ludivine source files

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