Changeset 20
- Timestamp:
- 10/05/16 14:25:40 (8 years ago)
- Location:
- branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/bio.com
r4 r20 66 66 & jn_car, !: ... 67 67 & jn_co2, !: ... 68 & jn_cal 68 & jn_cal, !: ... 69 & jn_aon, !: ... 70 & jn_eon, !: ... 71 & jn_aop, !: ... 72 & jn_eop 69 73 70 74 REAL(8), DIMENSION(ntra_bio_max,nlay_bio) :: … … 118 122 & fdiff, 119 123 & csat_gas, 120 & sol_gas 124 & sol_gas, 125 & FDSI_AD, 126 & FDIN_AD, 127 & FDIP_AD 128 121 129 122 130 COMMON /bioini/ … … 137 145 & jn_car, !: ... 138 146 & jn_co2, !: ... 139 & jn_cal 147 & jn_cal, !: ... 148 & jn_aon, !: ... 149 & jn_eon, !: ... 150 & jn_aop, !: 151 & jn_eop 140 152 141 153 COMMON /biophyparams/ … … 200 212 & ln_gasflux , !: activate gas flux to atm 201 213 & ln_carbon , !: activate carbon cycle 202 & ln_ikaite !: activate CaCO3 203 214 & ln_ikaite , !: activate CaCO3 215 & ln_decoupNC , !: activate N cycle disconnected from C cycle 216 & ln_decoupPC 217 204 218 INTEGER(4) :: 205 219 & nn_bio_opt , !: type of biological model (0=NP, 1=NPD Redfield) … … 258 272 & e_thr_gasflux , 259 273 & sursat_gas , 260 & caco3_time 274 & caco3_time , 275 & ln_decoupNC , 276 & ln_decoupPC 261 277 262 278 !----------------------- … … 329 345 & lim_tem(nlay_bio) , !: temperature limitation 330 346 & lim_sal(nlay_bio) , !: salt limitation 331 & chlC_bio(nlay_bio) !: interactive chl-a / C ratio 347 & chlC_bio(nlay_bio) , !: interactive chl-a / C ratio 348 & syn_N(nlay_bio) , !: 349 & lys_N(nlay_bio) , !: 350 & rsp_N(nlay_bio) , !: 351 & rem_N(nlay_bio) , !: 352 & syn_P(nlay_bio) , !: 353 & lys_P(nlay_bio) , !: 354 & rsp_P(nlay_bio) , !: 355 & rem_P(nlay_bio) , !: 356 & N_C_alg(nlay_bio) , !: N/C ratio in algae (if ln_decoupNC = TRUE) 357 & N_C_det(nlay_bio) , !: N/C ratio in detritic matter (if ln_decoupNC = TRUE) 358 & lim_din_stock(nlay_bio) , !: limitation en stock DIN 359 & lim_dip_stock(nlay_bio) , !: 360 & lim_dsi_stock(nlay_bio) , !: 361 & P_C_alg(nlay_bio) , !: P/C ratio in algae (if ln_decoupPC = TRUE) 362 & P_C_det(nlay_bio) , !: P/C ratio in algae (if ln_decoupPC = TRUE) 363 & N_P_alg(nlay_bio) , !: N/P ratio in algae (if ln_decoupPC = TRUE) 364 & N_P_det(nlay_bio) !: N/P ratio in algae (if ln_decoupPC = TRUE) 332 365 333 366 COMMON /biosources/ … … 345 378 & lim_tem , !: 346 379 & lim_sal , !: 347 & chlC_bio !: 380 & chlC_bio , !: 381 & syn_N , !: 382 & lys_N , !: 383 & rsp_N , !: 384 & rem_N , !: 385 & syn_P , !: 386 & lys_P , !: 387 & rsp_P , !: 388 & rem_P , !: 389 & N_C_alg , !: 390 & N_C_det , !: 391 & lim_din_stock , !: 392 & lim_dip_stock , !: 393 & lim_dsi_stock , !: 394 & P_C_alg , !: 395 & P_C_det , !: 396 & N_P_alg , !: 397 & N_P_det !: 398 348 399 349 400 COMMON /biorad/ … … 374 425 & po4_c , !: N cell quota in diatoms 375 426 & oxy_c , !: Oxygen cell quota in diatoms 376 & c_molar !: carbon molar mass 427 & c_molar , !: carbon molar mass 428 & ksyn_N , !: intensity of N flux compared with C flux 429 & klys_N , !: same 430 & krsp_N , !: same 431 & krem_N , !: same 432 & ksyn_P , !: intensity of N flux compared with C flux 433 & klys_P , !: same 434 & krsp_P , !: same 435 & krem_P !: same 377 436 378 437 COMMON /bioparams/ … … 381 440 & krem_bio, krsp_bio, 382 441 & rg_bio, rg_bac, chla_c, Estar, si_c, no3_c, po4_c, oxy_c, 383 & lim_sal_wid, lim_sal_smax, c_molar 384 442 & lim_sal_wid, lim_sal_smax, c_molar, ksyn_N, klys_N, 443 & krsp_N, krem_N, ksyn_P, klys_P, krsp_P, 444 & krem_P 445 446 -
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/ice_bio_ini.f
r4 r20 62 62 63 63 IF ( c_bio_model .EQ. 'KRILL' ) THEN 64 ntra_bio = 2 164 ntra_bio = 23 65 65 ENDIF 66 66 ! … … 117 117 jn_arg = 12 ! 17 118 118 jn_cal = 13 ! 21 119 jn_aon = 14 120 jn_eon = 15 121 jn_aop = 16 122 jn_eop = 17 119 123 120 124 ! Assign Tracer names … … 132 136 biotr_i_nam(jn_oxy) = 'Oxy'//zblank 133 137 biotr_i_nam(jn_nit) = 'Nit'//zblank 138 biotr_i_nam(jn_aon) = 'AoN'//zblank 139 biotr_i_nam(jn_eon) = 'eoN'//zblank 140 biotr_i_nam(jn_aop) = 'AoP'//zblank 141 biotr_i_nam(jn_eop) = 'eoP'//zblank 134 142 135 143 ! … … 167 175 READ(numtra,*) 168 176 169 DO jn_read = 1, 1 3177 DO jn_read = 1, 17 170 178 171 179 READ(numtra,*) c_read_name(jn_read), zchar, i_dummy1, zdummy2, … … 248 256 flag_adsorb(jn) = .false. 249 257 flag_diff(jn) = .false. 250 nn_remp(jn) = 1258 nn_remp(jn) = 2 251 259 biotr_i_typ(jn) = 'prc'//zblank 252 260 biotr_i_uni(jn) = 'mmol_m3'//zblank … … 259 267 flag_adsorb(jn) = .false. 260 268 flag_diff(jn) = .false. 261 nn_remp(jn) = 1 269 nn_remp(jn) = 2 270 biotr_i_typ(jn) = 'prc'//zblank 271 biotr_i_uni(jn) = 'mmol_m3'//zblank 272 273 !-------------------------------------- 274 ! AoN : Ice algae organic N 275 !-------------------------------------- 276 jn = jn_aon 277 flag_active(jn) = .true. 278 flag_adsorb(jn) = .false. 279 flag_diff(jn) = .false. 280 nn_remp(jn) = 2 281 biotr_i_typ(jn) = 'prc'//zblank 282 biotr_i_uni(jn) = 'mmol_m3'//zblank 283 284 !-------------------------------------- 285 ! eoN : Detritus organic N 286 !-------------------------------------- 287 jn = jn_eon 288 flag_active(jn) = .true. 289 flag_adsorb(jn) = .false. 290 flag_diff(jn) = .false. 291 nn_remp(jn) = 2 292 biotr_i_typ(jn) = 'prc'//zblank 293 biotr_i_uni(jn) = 'mmol_m3'//zblank 294 295 !-------------------------------------- 296 ! AoP : Ice algae organic P 297 !-------------------------------------- 298 jn = jn_aop 299 flag_active(jn) = .true. 300 flag_adsorb(jn) = .false. 301 flag_diff(jn) = .false. 302 nn_remp(jn) = 2 303 biotr_i_typ(jn) = 'prc'//zblank 304 biotr_i_uni(jn) = 'mmol_m3'//zblank 305 306 !-------------------------------------- 307 ! eoP : Detritus organic P 308 !-------------------------------------- 309 jn = jn_eop 310 flag_active(jn) = .true. 311 flag_adsorb(jn) = .false. 312 flag_diff(jn) = .false. 313 nn_remp(jn) = 2 262 314 biotr_i_typ(jn) = 'prc'//zblank 263 315 biotr_i_uni(jn) = 'mmol_m3'//zblank -
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/ice_bio_param.f
r4 r20 93 93 READ(numbio,*) ln_ikaite ! activate ikaite 94 94 READ(numbio,*) 95 READ(numbio,*) ln_decoupNC ! N cycle diconnected from C cycle 96 READ(numbio,*) 97 READ(numbio,*) ln_decoupPC ! P cycle diconnected from C cycle 98 READ(numbio,*) 95 99 READ(numbio,*) 96 100 READ(numbio,*) … … 147 151 READ(numbio,*) 148 152 READ(numbio,*) frem_bio ! fraction of diatom loss that is remineralized in Si 153 READ(numbio,*) 154 READ(numbio,*) ksyn_N ! intensity of N flux VS C flux 155 READ(numbio,*) 156 READ(numbio,*) klys_N 157 READ(numbio,*) 158 READ(numbio,*) krsp_N 159 READ(numbio,*) 160 READ(numbio,*) krem_N 161 READ(numbio,*) 162 READ(numbio,*) ksyn_P 163 READ(numbio,*) 164 READ(numbio,*) klys_P 165 READ(numbio,*) 166 READ(numbio,*) krsp_P 167 READ(numbio,*) 168 READ(numbio,*) krem_P 149 169 READ(numbio,*) 150 170 READ(numbio,*) … … 219 239 WRITE(numout,*) ' ln_carbon : ', ln_carbon 220 240 WRITE(numout,*) ' ln_ikaite : ', ln_ikaite 241 WRITE(numbio,*) ' ln_decoupNC:', ln_decoupNC 221 242 WRITE(numout,*) 222 243 WRITE(numout,*) ' nn_init : ', nn_init … … 234 255 WRITE(numout,*) ' cco2_ini : ', cco2_ini 235 256 WRITE(numout,*) ' ccal_ini : ', ccal_ini 257 WRITE(numbio,*) ' caon_ini : ', caon_ini 258 WRITE(numbio,*) ' ceon_ini : ', ceon_ini 259 WRITE(numbio,*) ' caop_ini : ', caop_ini 260 WRITE(numbio,*) ' ceop_ini : ', ceop_ini 236 261 WRITE(numout,*) ' cno3_w : ', cno3_w 237 262 WRITE(numout,*) ' cpo4_w : ', cpo4_w … … 247 272 WRITE(numout,*) ' cco2_w : ', cco2_w 248 273 WRITE(numout,*) ' ccal_w : ', ccal_w 274 WRITE(numbio,*) ' caon_w : ', caon_w 275 WRITE(numbio,*) ' ceon_w : ', ceon_w 249 276 WRITE(numout,*) ' mr_oxy : ', mr_oxy 250 277 WRITE(numout,*) ' mr_nit : ', mr_nit … … 271 298 WRITE(numout,*) ' krsp_bio : ', krsp_bio 272 299 WRITE(numout,*) ' krem_bio : ', krem_bio 273 WRITE(numout,*) ' frem_bio : ', frem_bio 300 WRITE(numout,*) ' frem_bio : ', frem_bio 301 WRITE(numout,*) ' ksyn_N : ', ksyn_N 302 WRITE(numout,*) ' klys_N : ', klys_N 303 WRITE(numout,*) ' krsp_N : ', krsp_N 304 WRITE(numout,*) ' krem_N : ', krem_N 305 WRITE(numout,*) ' ksyn_P : ', ksyn_P 306 WRITE(numout,*) ' klys_P : ', klys_P 307 WRITE(numout,*) ' krsp_P : ', krsp_P 308 WRITE(numout,*) ' krem_P : ', krem_P 274 309 WRITE(numout,*) ' nn_phs : ', nn_phs 275 310 WRITE(numout,*) ' ek_bio : ', ek_bio -
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/ice_bio_sms.f
r4 r20 82 82 !-----------------------------------------------------------------------------! 83 83 ! 84 consN = 0 85 86 DO layer = layer_00, nlay_bio 87 88 trucN = cbu_i_bio(jn_din,layer) + cbu_i_bio(jn_eon,layer) 89 & + cbu_i_bio(jn_aon,layer) + consN 90 consN = trucN 91 92 END DO 93 94 WRITE(numout,*) ' Conservation BIO N :', consN 95 84 96 85 97 ! Reference of the upper layer … … 246 258 END DO 247 259 248 ! Remineralization 249 IF ( ln_rem ) THEN 250 251 SELECT CASE ( nn_bio_opt ) 252 253 CASE(0) ! NP 254 255 rem_bio(layer_00:nlay_bio) = frem_bio * 256 & lys_bio(layer_00:nlay_bio) 257 258 CASE(1) ! NPDr 259 260 IF ( nn_rem .GE. 1 ) ! no T-dependence 261 & rem_bio(layer_00:nlay_bio) = krem_bio * 262 & cbu_i_bio(jn_eoc,layer_00:nlay_bio) 263 264 265 IF ( nn_rem .EQ. 2 ) ! T-dependence 266 & rem_bio(layer_00:nlay_bio) = rem_bio(layer_00:nlay_bio) * 267 & EXP( rg_bac * tc_bio(layer_00:nlay_bio) ) 268 269 END SELECT 270 271 ENDIF 272 260 DO layer = layer_00, nlay_bio 261 262 IF ( ln_rem ) THEN 263 264 SELECT CASE ( nn_bio_opt ) 265 266 CASE(0) ! NP 267 268 rem_bio(layer) = frem_bio * 269 & lys_bio(layer) 270 271 CASE(1) ! NPD 272 273 IF ( nn_rem .EQ. 1 ) ! no T-dependence 274 & rem_bio(layer) = krem_bio * 275 & cbu_i_bio(jn_eoc,layer) 276 277 IF ( nn_rem .EQ. 2 ) ! T-dependence 278 & rem_bio(layer) = krem_bio * cbu_i_bio(jn_eoc,layer) 279 & * EXP( rg_bac * tc_bio(layer) ) 280 281 END SELECT 282 283 ENDIF 284 285 END DO 273 286 274 287 !------------------------------------------------------------------------ 275 288 ! 2.3 Diatom Synthesis 276 289 !------------------------------------------------------------------------ 290 zeps = 0.000000001 277 291 278 292 DO layer = layer_00, nlay_bio 279 293 280 294 IF ( ln_syn ) THEN 281 295 ! raw synthesis (in s-1) … … 287 301 zsyn1 = z_syn * cbu_i_bio(jn_aoc,layer) ! normal carbon production rate (mmolC/m3/s) 288 302 zsyn2 = zsyn1; zsyn3 = zsyn1; zsyn4 = zsyn1 303 289 304 290 305 IF ( ln_lim_dsi ) ! prevent exhaustion of Si 291 306 & zsyn2 = cbu_i_bio(jn_dsi,layer) / ddtb / si_c - zeps 292 307 293 IF ( ln_lim_no3 ) ! prevent exhaustion of N 294 & zsyn3 = cbu_i_bio(jn_din,layer) / ddtb / no3_c - zeps 295 296 IF ( ln_lim_po4 ) ! prevent exhaustion of P 297 & zsyn4 = cbu_i_bio(jn_dip,layer) / ddtb / po4_c - zeps 298 299 ! nutrient stock-limited PP rate 308 IF (ln_decoupNC) THEN ! C aussi limité en stock par DIN 309 zC = MAX (cbu_i_bio(jn_aoc,layer) , zeps ) 310 zN = MAX (cbu_i_bio(jn_aon,layer) , zeps ) 311 N_C_alg(layer) = zN / zC 312 ! N_C_alg(layer) = 0.14 313 zsyn3 = cbu_i_bio(jn_din,layer) / (ddtb*N_C_alg(layer)) 314 & - zeps 315 ELSE 316 zsyn3 = cbu_i_bio(jn_din,layer) / (ddtb * no3_c) - zeps 317 ENDIF 318 319 320 IF (ln_decoupPC) THEN ! C aussi limité en stock par DIP 321 zC = MAX (cbu_i_bio(jn_aoc,layer) , zeps ) 322 zP = MAX (cbu_i_bio(jn_aop,layer) , zeps ) 323 P_C_alg(layer) = zP / zC 324 ! P_C_alg(layer) = 0.0094 325 zsyn4 = cbu_i_bio(jn_dip,layer)/(ddtb * P_C_alg(layer)) 326 & - zeps 327 ELSE 328 zsyn4 = cbu_i_bio(jn_dip,layer) / ddtb / po4_c - zeps 329 ENDIF 330 331 332 ! nutrient stock-limited PP rate 300 333 syn_bio(layer) = MIN( zsyn1, zsyn2, zsyn3, zsyn4 ) 301 334 … … 312 345 313 346 314 END DO ! layer 315 316 !------------------------------------------------------------------------ 317 ! 2.4 Update reservoirs 318 !------------------------------------------------------------------------ 319 320 DO layer = layer_00, nlay_bio 347 ! ------------------------- 348 ! -- Limitations en stocks 349 ! ------------------------ 350 351 IF (ln_decoupNC) THEN 352 zzdin = syn_bio(layer) / (((1/N_C_alg(layer)) * 353 & (cbu_i_bio(jn_din,layer)/ddtb)) - zeps) 354 355 ELSE 356 zzdin = syn_bio(layer) / (((1/no3_c) * 357 & (cbu_i_bio(jn_din,layer)/ddtb)) - zeps) 358 ENDIF 359 360 361 IF (ln_decoupPC) THEN 362 zzpo4 = syn_bio(layer) / (((1/P_C_alg(layer)) * 363 & (cbu_i_bio(jn_dip,layer)/ddtb)) - zeps) 364 365 ELSE 366 zzpo4 = syn_bio(layer) / (((1/po4_c) * 367 & (cbu_i_bio(jn_dip,layer)/ddtb)) - zeps) 368 ENDIF 369 370 371 372 zzsi = syn_bio(layer) / (((1/si_c) * 373 & (cbu_i_bio(jn_dsi,layer)/ddtb)) - zeps) 374 375 376 IF ( zzdin .EQ. 1 ) THEN 377 lim_din_stock(layer) = 1 !DIN est limitant en stocks 378 ELSE 379 lim_din_stock(layer) = 0 !DIN PAS limitant en stocks 380 ENDIF 381 382 IF ( zzpo4 .EQ. 1 ) THEN 383 lim_dip_stock(layer) = 1 384 ELSE 385 lim_dip_stock(layer) = 0 386 ENDIF 387 388 IF ( zzsi .EQ. 1) THEN 389 lim_dsi_stock(layer) = 1 390 ELSE 391 lim_dsi_stock(layer) = 0 392 ENDIF 393 394 395 !------------------------------------------------------------------------ 396 ! N cycle 397 !------------------------------------------------------------------------ 398 399 400 IF ( ln_decoupNC ) THEN 401 402 !--- Nitrogen carbon algal ratio 403 zC = MAX( cbu_i_bio(jn_aoc,layer) , zeps ) 404 zN = MAX( cbu_i_bio(jn_aon,layer) , zeps ) 405 N_C_alg(layer) = zN / zC 406 ! zN_C = MIN( cbu_i_bio(jn_aon,layer) / zC , N_C_max ) 407 ! zN_C = MAX( N_C_min , zN_C ) 408 ! N_C_alg(layer) = zN_C ! => marche pas 409 ! N_C_alg(layer) = 0.14 410 411 !--- Nitrogen carbon detritic ratio 412 zC = MAX( cbu_i_bio(jn_eoc,layer), zeps ) 413 zNd = MAX( cbu_i_bio(jn_eon,layer), zeps ) 414 N_C_det(layer) = zNd / zC 415 ! N_C_det(layer) = 0.14 416 417 !--- Process rates 418 syn_N(layer) = N_C_alg(layer) * ksyn_N * syn_bio(layer) 419 rsp_N(layer) = N_C_alg(layer) * krsp_N * rsp_bio(layer) 420 lys_N(layer) = N_C_alg(layer) * klys_N * lys_bio(layer) 421 rem_N(layer) = N_C_det(layer) * krem_N * rem_bio(layer) 422 423 424 ENDIF ! ln_decoupNC 425 426 !------------------------------------------------------------------------ 427 ! P cycle 428 !------------------------------------------------------------------------ 429 430 431 IF ( ln_decoupPC ) THEN 432 433 !--- P carbon algal ratio 434 zC = MAX( cbu_i_bio(jn_aoc,layer) , zeps ) 435 zP = MAX( cbu_i_bio(jn_aop,layer) , zeps ) 436 P_C_alg(layer) = zP / zC 437 438 !--- P carbon detritic ratio 439 zC = MAX( cbu_i_bio(jn_eoc,layer), zeps ) 440 zPd = MAX( cbu_i_bio(jn_eop,layer), zeps ) 441 P_C_det(layer) = zPd / zC 442 443 !--- Process rates 444 syn_P(layer) = P_C_alg(layer) * ksyn_P * syn_bio(layer) 445 rsp_P(layer) = P_C_alg(layer) * krsp_P * rsp_bio(layer) 446 lys_P(layer) = P_C_alg(layer) * klys_P * lys_bio(layer) 447 rem_P(layer) = P_C_det(layer) * krem_P * rem_bio(layer) 448 449 ENDIF ! ln_decoupPC 450 451 452 zPa = MAX( cbu_i_bio(jn_aop,layer) , zeps ) 453 zNt = MAX( cbu_i_bio(jn_aon,layer) , zeps ) 454 N_P_alg(layer) = zNt / zPa 455 zPe = MAX( cbu_i_bio(jn_eop,layer) , zeps ) 456 zNtd = MAX( cbu_i_bio(jn_eon,layer) , zeps ) 457 N_P_det(layer) = zNtd / zPe 458 459 460 461 !------------------------------------------------------------------------ 462 ! 2.4 Update reservoirs (including N cycle reservoirs) 463 !------------------------------------------------------------------------ 464 465 ! ------------------------------------------------------- 466 ! -- 1) Increments 467 ! ------------------------------------------------------ 468 321 469 322 470 ! DSi uptake … … 325 473 zd_dsi2 = - cbu_i_bio(jn_dsi,layer) ! Maximum DSi uptake 326 474 zd_dsi = MAX ( zd_dsi1, zd_dsi2 ) 327 328 ! NO3 uptake329 zd_no31 = no3_c * ( rem_bio(layer) +330 & rsp_bio(layer) - syn_bio(layer) ) * ddtb331 zd_no32 = - cbu_i_bio(jn_din,layer) ! Max NO3 uptake332 zd_no3 = MAX ( zd_no31, zd_no32 )333 334 ! update PO4335 zd_po41 = po4_c * ( rem_bio(layer) +336 & rsp_bio(layer) - syn_bio(layer) ) * ddtb337 zd_po42 = - cbu_i_bio(jn_dip,layer) ! Max PO4 uptake338 zd_po4 = MAX ( zd_po41, zd_po42 )339 475 340 476 ! update algae … … 350 486 zd_eoc2 = - cbu_i_bio(jn_eoc,layer) ! Max detrital carbon loss 351 487 zd_eoc = MAX( zd_eoc1, zd_eoc2 ) 352 ENDIF 488 ENDIF ! nn_bio_opt 489 490 491 IF (ln_decoupNC) THEN 492 493 !--- Increments 494 zd_din1 = ( rsp_N(layer) - syn_N(layer) + 495 & rem_N(layer) ) * ddtb 496 zd_din2 = - cbu_i_bio(jn_din,layer) !PEU PAS EPUISER PLUS 497 !QUE CE QUIL Y A !!!! 498 zd_din = MAX ( zd_din1, zd_din2 ) ! interessant dans le cas 499 ! ou zd_din1 est négatif 500 ! zd_din1 peut pas être 501 ! plus petit que zd_din2 502 503 zd_aon1 = ( syn_N(layer) - rsp_N(layer) - lys_N(layer) ) * 504 & ddtb 505 zd_aon2 = - cbu_i_bio(jn_aon,layer) 506 zd_aon = MAX ( zd_aon1, zd_aon2 ) 507 508 zd_eon1 = ( lys_N(layer) - rem_N(layer) ) * ddtb 509 zd_eon2 = - cbu_i_bio(jn_eon,layer) 510 zd_eon = MAX ( zd_eon1, zd_eon2 ) 511 512 !--- Correct rates to prevent leaks 513 IF ( zd_din .EQ. zd_din2 ) 514 & syn_N(layer) = MIN( syn_N(layer), -zd_din2/ddtb) 515 516 IF ( zd_aon .EQ. zd_aon2 ) 517 & lys_N(layer) = MIN( lys_N(layer), -zd_aon2/ddtb) 518 519 IF ( zd_eon .EQ. zd_eon2 ) 520 & rem_N(layer) = MIN( rem_N(layer), -zd_eon2/ddtb) 521 522 523 ELSE 524 zd_din1 = no3_c * ( rem_bio(layer) + 525 & rsp_bio(layer) - syn_bio(layer) ) * ddtb 526 zd_din2 = - cbu_i_bio(jn_din,layer) ! Max NO3 uptake 527 zd_din = MAX ( zd_din1, zd_din2 ) 528 529 ENDIF ! ln_decoupNC 530 531 !!!!!!!!!!!!!!!!!! 532 533 IF (ln_decoupPC) THEN 534 535 !--- Increments 536 zd_dip1 = ( rsp_P(layer) - syn_P(layer) + 537 & rem_P(layer) ) * ddtb 538 zd_dip2 = - cbu_i_bio(jn_dip,layer) !PEU PAS EPUISER PLUS 539 !QUE CE QUIL Y A !!!! 540 zd_dip = MAX ( zd_dip1, zd_dip2 ) ! interessant dans le 541 ! ou zd_din1 est négatif 542 ! zd_din1 peut pas être 543 ! plus petit que zd_din2 544 545 zd_aop1 = ( syn_P(layer) - rsp_P(layer) - lys_P(layer) ) * 546 & ddtb 547 zd_aop2 = - cbu_i_bio(jn_aop,layer) 548 zd_aop = MAX ( zd_aop1, zd_aop2 ) 549 550 zd_eop1 = ( lys_P(layer) - rem_P(layer) ) * ddtb 551 zd_eop2 = - cbu_i_bio(jn_eop,layer) 552 zd_eop = MAX ( zd_eop1, zd_eop2 ) 553 554 !--- Correct rates to prevent leaks 555 IF ( zd_dip .EQ. zd_dip2 ) 556 & syn_P(layer) = MIN( syn_P(layer), -zd_dip2/ddtb) 557 558 IF ( zd_aop .EQ. zd_aop2 ) 559 & lys_P(layer) = MIN( lys_P(layer), -zd_aop2/ddtb) 560 561 IF ( zd_eop .EQ. zd_eop2 ) 562 & rem_P(layer) = MIN( rem_P(layer), -zd_eop2/ddtb) 563 564 565 ELSE 566 zd_dip1 = po4_c * ( rem_bio(layer) + 567 & rsp_bio(layer) - syn_bio(layer) ) * ddtb 568 zd_dip2 = - cbu_i_bio(jn_dip,layer) ! Max DIP uptake 569 zd_dip = MAX ( zd_dip1, zd_dip2 ) 570 571 ENDIF ! ln_decoupPC 572 573 574 ! ------------------------------------------------------- 575 ! -- 2) Add Increments 576 ! ------------------------------------------------------ 577 578 IF (ln_decoupNC) THEN 579 cbu_i_bio(jn_din,layer) = cbu_i_bio(jn_din,layer) + zd_din 580 cbu_i_bio(jn_aon,layer) = cbu_i_bio(jn_aon,layer) + zd_aon 581 cbu_i_bio(jn_eon,layer) = cbu_i_bio(jn_eon,layer) + zd_eon 582 ELSE 583 cbu_i_bio(jn_din,layer) = cbu_i_bio(jn_din,layer) + zd_din 584 ENDIF 585 586 IF (ln_decoupPC) THEN 587 cbu_i_bio(jn_dip,layer) = cbu_i_bio(jn_dip,layer) + zd_dip 588 cbu_i_bio(jn_aop,layer) = cbu_i_bio(jn_aop,layer) + zd_aop 589 cbu_i_bio(jn_eop,layer) = cbu_i_bio(jn_eop,layer) + zd_eop 590 ELSE 591 cbu_i_bio(jn_dip,layer) = cbu_i_bio(jn_dip,layer) + zd_dip 592 ENDIF 593 353 594 354 595 cbu_i_bio(jn_dsi,layer) = cbu_i_bio(jn_dsi,layer) + zd_dsi 355 cbu_i_bio(jn_din,layer) = cbu_i_bio(jn_din,layer) + zd_no3356 cbu_i_bio(jn_dip,layer) = cbu_i_bio(jn_dip,layer) + zd_po4357 596 cbu_i_bio(jn_aoc,layer) = cbu_i_bio(jn_aoc,layer) + zd_daf 358 597 359 598 IF ( nn_bio_opt .GE. 1 ) 360 599 & cbu_i_bio(jn_eoc,layer) = cbu_i_bio(jn_eoc,layer) + zd_eoc 600 361 601 362 602 IF ( ln_write_bio ) THEN … … 375 615 WRITE(numout,*) ' lim_tem : ', lim_tem(layer) 376 616 WRITE(numout,*) ' lim_sal : ', lim_sal(layer) 617 WRITE(numout,*) ' lim_din_stock : ', lim_din_stock(layer) 618 WRITE(numout,*) ' lim_dip_stock : ', lim_dip_stock(layer) 619 WRITE(numout,*) ' lim_dsi_stock : ', lim_dsi_stock(layer) 377 620 WRITE(numout,*) 378 621 WRITE(numout,*) ' tc_bio : ', tc_bio(layer) … … 381 624 WRITE(numout,*) 382 625 WRITE(numout,*) ' zd_dsi : ', zd_dsi 383 WRITE(numout,*) ' zd_no3 : ', zd_no3384 626 WRITE(numout,*) ' zd_po4 : ', zd_po4 385 627 WRITE(numout,*) ' zd_daf : ', zd_daf 386 628 WRITE(numout,*) ' zd_eoc : ', zd_eoc 629 WRITE(numout,*) ' zd_din : ', zd_din 387 630 WRITE(numout,*) 388 631 WRITE(numout,*) ' dSi : ', cbu_i_bio(jn_dsi,layer) 389 WRITE(numout,*) ' dIN : ', cbu_i_bio(jn_din,layer) 632 WRITE(numout,*) ' dIN : ', cbu_i_bio(jn_din,layer) 390 633 WRITE(numout,*) ' dIP : ', cbu_i_bio(jn_dip,layer) 391 634 WRITE(numout,*) ' AoC : ', cbu_i_bio(jn_aoc,layer) 392 635 WRITE(numout,*) ' eoC : ', cbu_i_bio(jn_eoc,layer) 393 WRITE(numout,*) 636 WRITE(numout,*) ' krem_N : ', krem_N 637 638 639 IF (ln_decoupNC) THEN 640 WRITE(numout,*) ' syn_N : ', syn_N(layer) 641 WRITE(numout,*) ' rsp_N : ', rsp_N(layer) 642 WRITE(numout,*) ' lys_N : ', lys_N(layer) 643 WRITE(numout,*) ' rem_N : ', rem_N(layer) 644 WRITE(numout,*) 645 WRITE(numout,*) ' zd_aon : ', zd_aon 646 WRITE(numout,*) ' zd_eon : ', zd_eon 647 WRITE(numout,*) 648 WRITE(numout,*) ' AoN : ', cbu_i_bio(jn_aon,layer) 649 WRITE(numout,*) ' eoN : ', cbu_i_bio(jn_eon,layer) 650 WRITE(numout,*) 651 WRITE(numout,*) ' N_C_alg : ', N_C_alg(layer) 652 WRITE(numout,*) ' N_C_det : ', N_C_det(layer) 653 ENDIF ! ln_decoupNC 394 654 395 655 ENDIF ! ln_write_bio 396 656 397 657 END DO ! layer 658 659 398 660 399 661 !------------------------------------------------------------------------ … … 408 670 & .AND. flag_active(jn_alk) ) THEN 409 671 410 zd_dic1 = - zncp * ddtb 672 zd_dic1 = - zncp * ddtb !! Bizarre 411 673 zd_dic2 = - cbu_i_bio(jn_dic,layer) 412 674 zd_dic = MAX( zd_dic1 , zd_dic2 ) 413 675 414 zd_alk1 = no3_c * zncp * ddtb 676 zd_alk1 = no3_c * zncp * ddtb !! Bizarre 415 677 zd_alk2 = - cbu_i_bio(jn_alk,layer) 416 678 zd_alk = MAX( zd_alk1 , zd_alk2 ) -
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/ice_gas.f
r4 r20 48 48 ! 49 49 50 50 51 !--- Gas concentrations 51 52 DO jn = 1, ntra_bio … … 59 60 ENDIF 60 61 61 ! Carbonate chemistry 62 IF ( ln_carbon ) CALL ice_carb_chem 62 END DO 63 64 ! Carbonate chemistry 65 IF ( ln_carbon ) CALL ice_carb_chem 66 67 DO jn = 1, ntra_bio 63 68 64 69 IF ( ( flag_active(jn) ) .AND. -
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/ice_output.f
r4 r20 211 211 . "kgNaCl/dm3","time","-","-","-" ) 212 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 213 230 214 231 ! Forcing … … 421 438 WRITE(numout,*) ' ChlC_bio created ' 422 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 423 472 CALL CF_CREATE_VAR("Chla_phy", "Chlorophyll a on phy grid", 424 473 & "mmol.m-3","time","z_i_p","-","-" ) … … 492 541 . "-","time","z_i_b","-","-" ) 493 542 WRITE(numout,*) ' Sal limitation created ' 494 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 495 556 CALL CF_CREATE_VAR("divf_si","Flux divergence silicate", 496 557 . "mmol Si m-3 s-1","time","z_i_b","-","-" ) … … 593 654 & 1, 1, 1, REAL(oce_sal) ) 594 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 595 669 ! Forcing 596 670 !--------- … … 703 777 CALL CF_WRITE (filenc, 't_s ', numit-nstart+1, nlay_s, 1, 1, 704 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 705 788 706 789 ! Radiative transfer … … 916 999 & dummy_vector ) 917 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 918 1044 ! Chla, biological grid 919 1045 DO layer = 1, nlay_bio … … 1035 1161 CALL CF_WRITE (filenc, 'lim_sal', numit-nstart+1, nlay_bio, 1, 1, 1036 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 1037 1184 1038 1185 ! Flux divergence, silicate -
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/ice_sal_adv.f
r10 r20 43 43 & zb , !: gravity drainage 44 44 & zc , !: upward advective flow 45 & w_adv_br , !: brine velocity46 45 & zRae , !: effective Ra 47 46 & ze , !: downward advective flow … … 49 48 & zindtbis , !: 50 49 & zdiagbis !: 50 51 51 52 52 REAL(8), DIMENSION(nlay_i,3) :: !: dummy factors for tracer equation … … 75 75 & zlevel , !: height of the water column 76 76 & zthdiff !: thermal diffusivity 77 77 78 78 REAL(8), DIMENSION(nlay_i+1) :: 79 79 & z_sbr_int !: brine salinity at layer interfaces … … 300 300 rho_br_GN = 1020. 301 301 Rc_GN = 1.01 302 !alpha_GN = 1.0e-3 303 !Rc_GN = 1.0 302 304 303 305 w_adv_br(:) = 0.0 … … 322 324 !------------------------------------------------------------------------------| 323 325 ! 324 326 325 327 DO layer = 1, nlay_i 326 328 za(layer) = w_adv_br(layer) * ddtb / deltaz_i_phy(layer) … … 330 332 sn_i_b(1) = z_sbr_i(1) * ( e_i_b(1) + za(1) ) + 331 333 & z_sbr_i(2) * ( - za(1) ) 334 332 335 333 336 ! inner layers … … 342 345 & z_sbr_i(nlay_i) * ( e_i_b(nlay_i) + 343 346 & za(nlay_i)/2. ) - za(nlay_i) * oce_sal 347 344 348 345 349 IF ( ln_write ) THEN 346 350 WRITE(numout,*) 347 WRITE(numout,*)348 351 WRITE(numout,*) ' sn_i_b : ', ( sn_i_b(layer) , 349 352 & layer = 1, nlay_i ) … … 384 387 385 388 ENDIF ! ln_sal 389 390 386 391 ! 387 392 !------------------------------------------------------------------------------| -
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/ice_th.f
r9 r20 105 105 IF ( c_gravdr .EQ. 'DI' ) 106 106 & CALL ice_sal_diff(nlay_i,1,1) ! Salt transport (Eddy-diffusion-based) 107 108 IF ( c_gravdr .EQ. 'AD' ) 107 IF ( c_gravdr .EQ. 'AD' ) 109 108 & CALL ice_sal_adv(nlay_i,1,1) ! Salt transport (Advection-based) 110 109 111 IF ( ( c_bio_model .EQ. 'KRILL' ) .AND. ln_trdiff ) 112 & CALL ice_bio_diff( 1 , 1 , nlay_i ) ! Bio transport 110 IF ( ( c_bio_model .EQ. 'KRILL' ) .AND. ln_trdiff) THEN ! Bio transport 111 IF ( c_gravdr .EQ. 'DI' ) 112 & CALL ice_bio_diff(1,1,nlay_i) 113 ENDIF 114 115 IF ( ( c_bio_model .EQ. 'KRILL' ) .AND. ln_trdiff ) THEN 116 IF ( c_gravdr .EQ. 'AD' ) 117 & CALL ice_bio_adv(1,1,nlay_i) 118 ENDIF 113 119 114 120 IF ( c_bio_model .EQ. 'KRILL' ) -
branches/2016/dev_v3.20_2016_gravity_drainage/SOURCES/source_3.20/thermo.com
r9 r20 102 102 common/ salt / beta_sal, s_i_new, s_i_snic, e_skel, q_summer, 103 103 & diff_br(maxnlay), rayleigh(maxnlay), fsb, fsbp, 104 & w_flood, w_flush 104 & w_flood, w_flush, w_adv_br(maxnlay), 105 & divflux_AD(maxnlay) 105 106 106 107 ! units is a flux, including radab
Note: See TracChangeset
for help on using the changeset viewer.