Changeset 6319
- Timestamp:
- 2019-11-08T13:00:52+01:00 (5 years ago)
- Location:
- branches/ORCHIDEE_2_2/ORCHIDEE
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/intersurf.f90
r6289 r6319 195 195 REAL(r_std),DIMENSION (kjpindex) :: zcoastal !! Work array to keep coastalflow (m^3/dt) 196 196 REAL(r_std),DIMENSION (kjpindex) :: zriver !! Work array to keep riverflow (m^3/dt) 197 REAL(r_std),DIMENSION (kjpindex) :: znetco2 !! Work array to keep netco2flux (gC/m2/dt_sechiba)198 REAL(r_std),DIMENSION (kjpindex) :: zcarblu !! Work array to keep fco2_land_use (gC/m2/one_day)199 197 REAL(r_std),DIMENSION (kjpindex) :: ztsol_rad !! Work array to keep tsol_rad 200 198 REAL(r_std),DIMENSION (kjpindex) :: zvevapp !! Work array to keep vevapp … … 342 340 zcoastal, zriver, ztsol_rad, zvevapp, zqsurf, & 343 341 zz0m, zz0h, zalbedo, zfluxsens, zfluxlat, & 344 zemis, znetco2, zcarblu, ztemp_sol_new, zcdrag) 342 zemis, ztemp_sol_new,zcdrag) 343 345 344 346 345 IF (printlev_loc >= 3) WRITE(numout,*) 'After call to sechiba_initialize' … … 500 499 REAL(r_std),DIMENSION (kjpindex) :: zcoastal !! Work array to keep coastalflow (m^3/dt) 501 500 REAL(r_std),DIMENSION (kjpindex) :: zriver !! Work array to keep riverflow (m^3/dt) 502 REAL(r_std),DIMENSION (kjpindex) :: znetco2 !! Work array to keep netco2flux (gC/m2/ dt_sechiba)501 REAL(r_std),DIMENSION (kjpindex) :: znetco2 !! Work array to keep netco2flux (gC/m2/one_day) 503 502 REAL(r_std),DIMENSION (kjpindex) :: zcarblu !! Work array to keep fco2_land_use (gC/m2/one_day) 503 REAL(r_std),DIMENSION (kjpindex) :: zcarbwh !! Work array to keep fco2_wh (gC/m2/one_day) 504 REAL(r_std),DIMENSION (kjpindex) :: zcarbha !! Work array to keep fco2_ha (gC/m2/one_day) 504 505 REAL(r_std),DIMENSION (kjpindex) :: ztsol_rad !! Work array to keep tsol_rad 505 506 REAL(r_std),DIMENSION (kjpindex) :: zvevapp !! Work array to keep vevapp … … 571 572 zcdrag, zpetAcoef, zpeqAcoef, zpetBcoef, zpeqBcoef, & 572 573 zprecip_rain ,zprecip_snow, zlwdown, zswnet, zswdown, zcoszang, zpb, & 573 zvevapp, zfluxsens, zfluxlat, zcoastal, zriver, znetco2, zcarblu, & 574 zvevapp, zfluxsens, zfluxlat, zcoastal, zriver, & 575 znetco2, zcarblu, zcarbwh, zcarbha, & 574 576 ztsol_rad, ztemp_sol_new, zqsurf, zalbedo, zemis, zz0m, zz0h,& 575 577 zveget, zlai, zheight, & … … 624 626 CALL xios_orchidee_send_field("swdown",zswdown) 625 627 CALL xios_orchidee_send_field("pb",zpb) 626 CALL xios_orchidee_send_field("zcarblu",zcarblu/1e3/one_day) ! gC/m2/one_day -> kgC/m2/s 627 CALL xios_orchidee_send_field("znetco2",znetco2/1e3/dt_sechiba) ! gC/m2/dt_sechiba -> kgC/m2/s 628 CALL xios_orchidee_send_field("znetco2",znetco2/1.e3/one_day) ! gC/m2/one_day -> kgC/m2/s 629 CALL xios_orchidee_send_field("zcarblu",zcarblu/1.e3/one_day) ! gC/m2/one_day -> kgC/m2/s 630 CALL xios_orchidee_send_field("zcarbwh",zcarbwh/1.e3/one_day) ! gC/m2/one_day -> kgC/m2/s 631 CALL xios_orchidee_send_field("zcarbha",zcarbha/1.e3/one_day) ! gC/m2/one_day -> kgC/m2/s 628 632 629 633 … … 880 884 REAL(r_std),DIMENSION (kjpindex) :: zcoastal !! Work array to keep coastal flow 881 885 REAL(r_std),DIMENSION (kjpindex) :: zriver !! Work array to keep river out flow 882 REAL(r_std),DIMENSION (kjpindex) :: znetco2 !! Work array to keep netco2flux (gC/m2/dt_sechiba)883 REAL(r_std),DIMENSION (kjpindex) :: zcarblu !! Work array to keep fco2_land_use (gC/m2/one_day)884 886 REAL(r_std),DIMENSION (kjpindex) :: ztsol_rad !! Work array to keep tsol_rad 885 887 REAL(r_std),DIMENSION (kjpindex) :: zvevapp !! Work array to keep vevapp … … 1114 1116 zcoastal, zriver, ztsol_rad, zvevapp, zqsurf, & 1115 1117 zz0m, zz0h, zalbedo, zfluxsens, zfluxlat, zemis, & 1116 znetco2, zcarblu, ztemp_sol_new, zcdrag) 1118 ztemp_sol_new, zcdrag) 1119 1117 1120 1118 1121 IF ( printlev_loc>=3 ) WRITE(numout,*) 'After call to sechiba_initialize' … … 1334 1337 REAL(r_std),DIMENSION (kjpindex) :: zcoastal !! Work array to keep coastal flow 1335 1338 REAL(r_std),DIMENSION (kjpindex) :: zriver !! Work array to keep river out flow 1336 REAL(r_std),DIMENSION (kjpindex) :: znetco2 !! Work array to keep netco2flux (gC/m2/ dt_sechiba)1339 REAL(r_std),DIMENSION (kjpindex) :: znetco2 !! Work array to keep netco2flux (gC/m2/one_day) 1337 1340 REAL(r_std),DIMENSION (kjpindex) :: zcarblu !! Work array to keep fco2_land_use (gC/m2/one_day) 1341 REAL(r_std),DIMENSION (kjpindex) :: zcarbwh !! Work array to keep fco2_wh (gC/m2/one_day) 1342 REAL(r_std),DIMENSION (kjpindex) :: zcarbha !! Work array to keep fco2_ha (gC/m2/one_day) 1338 1343 REAL(r_std),DIMENSION (kjpindex) :: ztsol_rad !! Work array to keep tsol_rad 1339 1344 REAL(r_std),DIMENSION (kjpindex) :: zvevapp !! Work array to keep vevapp … … 1448 1453 zcdrag, petAcoef, peqAcoef, petBcoef, peqBcoef, & 1449 1454 zprecip_rain ,zprecip_snow, lwdown, swnet, swdown, zcoszang, pb, & 1450 zvevapp, zfluxsens, zfluxlat, zcoastal, zriver, znetco2, zcarblu, & 1455 zvevapp, zfluxsens, zfluxlat, zcoastal, zriver, & 1456 znetco2, zcarblu, zcarbwh, zcarbha, & 1451 1457 ztsol_rad, ztemp_sol_new, zqsurf, zalbedo, zemis, zz0m, zz0h, & 1452 1458 zveget, zlai, zheight, & … … 1488 1494 SELECT CASE(TRIM(field_in_names_loc(i))) 1489 1495 CASE("fCO2_nep") 1490 ! Transform from gC/m2/ dt_sechibainto kgC/m2/s1491 fields_in(ik,i) = znetco2(ik)/1 e3/dt_sechiba1496 ! Transform from gC/m2/one_day into kgC/m2/s 1497 fields_in(ik,i) = znetco2(ik)/1.e3/one_day 1492 1498 CASE("fCO2_fLuc") 1493 1499 ! Transform from gC/m2/one_day into kgC/m2/s 1494 fields_in(ik,i) = zcarblu(ik)/1e3/one_day 1500 fields_in(ik,i) = zcarblu(ik)/1.e3/one_day 1501 CASE("fCO2_fWoodharvest") 1502 ! Transform from gC/m2/one_day into kgC/m2/s 1503 fields_in(ik,i) = zcarbwh(ik)/1.e3/one_day 1504 CASE("fCO2_fHarvest") 1505 ! Transform from gC/m2/one_day into kgC/m2/s 1506 fields_in(ik,i) = zcarbha(ik)/1.e3/one_day 1495 1507 CASE("fCO2_nbp") 1496 fields_in(ik,i) = znetco2(ik)/1 e3/dt_sechiba + zcarblu(ik)/1e3/one_day1508 fields_in(ik,i) = znetco2(ik)/1.e3/one_day + zcarblu(ik)/1.e3/one_day + zcarbwh(ik)/1.e3/one_day + zcarbha(ik)/1.e3/one_day 1497 1509 CASE DEFAULT 1498 1510 CALL ipslerr_p (3,'intersurf_main_gathered', & … … 1529 1541 CALL xios_orchidee_send_field("riverflow_cpl",riverflow_cpl) 1530 1542 CALL xios_orchidee_send_field("coastalflow_cpl",coastalflow_cpl) 1531 CALL xios_orchidee_send_field("zcarblu",zcarblu/1e3/one_day) ! gC/m2/one_day -> kgC/m2/s 1532 CALL xios_orchidee_send_field("znetco2",znetco2/1e3/dt_sechiba) ! gC/m2/dt_sechiba -> kgC/m2/s 1543 CALL xios_orchidee_send_field("znetco2",znetco2/1.e3/one_day) ! gC/m2/one_day -> kgC/m2/s 1544 CALL xios_orchidee_send_field("zcarblu",zcarblu/1.e3/one_day) ! gC/m2/one_day -> kgC/m2/s 1545 CALL xios_orchidee_send_field("zcarbwh",zcarbwh/1.e3/one_day) ! gC/m2/one_day -> kgC/m2/s 1546 CALL xios_orchidee_send_field("zcarbha",zcarbha/1.e3/one_day) ! gC/m2/one_day -> kgC/m2/s 1547 1533 1548 1534 1549 IF ( .NOT. almaoutput ) THEN -
branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/ioipslctrl.f90
r5847 r6319 555 555 556 556 IF ( ok_stomate ) THEN 557 CALL histdef(hist_id, 'nee', 'Net Ecosystem Exchange', ' gC/m^2/s', &557 CALL histdef(hist_id, 'nee', 'Net Ecosystem Exchange', 'kgC/m^2/s', & 558 558 & iim,jjm, hori_id, nvm, 1, nvm, vegax_id, 32, fluxop_scinsec(4), dt,dw) 559 559 CALL histdef(hist_id, 'maint_resp', 'Maintenance respiration', 'gC/m^2/s', & … … 1516 1516 1517 1517 IF ( ok_stomate ) THEN 1518 CALL histdef(hist2_id, 'nee', 'Net Ecosystem Exchange', ' gC/m^2/s', &1518 CALL histdef(hist2_id, 'nee', 'Net Ecosystem Exchange', 'kgC/m^2/s', & 1519 1519 & iim,jjm, hori_id2, nvm, 1, nvm, vegax_id2, 32, fluxop_scinsec2(6), dt,dw2) 1520 1520 CALL histdef(hist2_id, 'maint_resp', 'Maintenance respiration', 'gC/m^2/s', & -
branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/sechiba.f90
r6160 r6319 210 210 REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:) :: evap_bare_lim_ns !! Bare soil stress 211 211 !$OMP THREADPRIVATE(evap_bare_lim_ns) 212 REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:) :: co2_flux !! CO2 flux (gC/m**2 of average ground/ dt_sechiba)212 REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:) :: co2_flux !! CO2 flux (gC/m**2 of average ground/one_day) 213 213 !$OMP THREADPRIVATE(co2_flux) 214 214 REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:,:) :: co2_to_bm !! virtual CO2 flux (gC/m**2 of average ground/s) … … 324 324 coastalflow, riverflow, tsol_rad, vevapp, qsurf_out, & 325 325 z0m_out, z0h_out, albedo, fluxsens, fluxlat, emis_out, & 326 netco2flux, fco2_lu,temp_sol_new, tq_cdrag)326 temp_sol_new, tq_cdrag) 327 327 328 328 !! 0.1 Input variables … … 406 406 !! @tex $(W m^{-2})$ @endtex 407 407 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: emis_out !! Emissivity (unitless) 408 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: netco2flux !! Sum CO2 flux over PFTs409 !! (gC/m2/dt_sechiba)410 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_lu !! Land Cover Change CO2 flux411 !! (gC/m2/one_day )412 408 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: temp_sol_new !! New ground temperature (K) 413 409 … … 439 435 frac_nobio, njsc, veget_max, fraclut, & 440 436 nwdfraclut, tot_bare_soil,totfrac_nobio, qsintmax, & 441 co2_flux, co2_to_bm, fco2_lu, temp_growth) 442 443 444 netco2flux(:) = zero 445 DO jv = 2,nvm 446 netco2flux(:) = netco2flux(:) + co2_flux(:,jv)*veget_max(:,jv) 447 ENDDO 437 co2_to_bm, temp_growth) 448 438 449 439 !! 1.4 Initialize diffusion coefficients … … 550 540 !! :: temp_sol_new and :: fluxlat), surface characteristics (:: z0_out, :: emis_out, 551 541 !! :: tq_cdrag and :: albedo) and land use related CO2 fluxes (:: netco2flux and 552 !! :: fco2_lu )542 !! :: fco2_lu, :: fco2_wh, ::fco2_ha) 553 543 !! 554 544 !! REFERENCE(S) : … … 567 557 & tq_cdrag, petAcoef, peqAcoef, petBcoef, peqBcoef, & 568 558 & precip_rain, precip_snow, lwdown, swnet, swdown, coszang, pb, & 569 & vevapp, fluxsens, fluxlat, coastalflow, riverflow, netco2flux, fco2_lu, & 559 & vevapp, fluxsens, fluxlat, coastalflow, riverflow, & 560 & netco2flux, fco2_lu, fco2_wh, fco2_ha, & 570 561 & tsol_rad, temp_sol_new, qsurf_out, albedo, emis_out, z0m_out, z0h_out,& 571 562 & veget_out, lai_out, height_out, & … … 663 654 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: netco2flux !! Sum CO2 flux over PFTs 664 655 !! (gC/m2/dt_sechiba) 665 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_lu !! Land Cover Change CO2 flux 666 !! (gC/m2/one_day) 656 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_lu !! Land Cover Change CO2 flux (gC/m2/one_day) 657 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_wh !! Wood harvest CO2 flux (gC/m2/one_day) 658 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_ha !! Crop harvest CO2 flux (gC/m2/one_day) 667 659 REAL(r_std),DIMENSION (kjpindex,nvm), INTENT (out) :: veget_out !! Fraction of vegetation type (unitless, 0-1) 668 660 REAL(r_std),DIMENSION (kjpindex,nvm), INTENT (out) :: lai_out !! Leaf area index (m^2 m^{-2}) … … 792 784 lai, frac_age, height, veget, frac_nobio, veget_max, totfrac_nobio, qsintmax, & 793 785 rest_id, hist_id, hist2_id, rest_id_stom, hist_id_stom, hist_id_stom_IPCC, & 794 co2_flux, fco2_lu, co2_to_bm, temp_growth, tot_bare_soil) 786 co2_flux, fco2_lu, fco2_wh, fco2_ha, co2_to_bm, temp_growth, tot_bare_soil) 787 795 788 796 789 !! 9.2 Compute global CO2 flux 797 790 netco2flux(:) = zero 798 791 DO jv = 2,nvm 799 netco2flux(:) = netco2flux(:) + co2_flux(:,jv)*veget_max(:,jv)792 netco2flux(:) = netco2flux(:) + co2_flux(:,jv)*(1-totfrac_nobio) 800 793 ENDDO 801 794 … … 960 953 ENDDO 961 954 CALL xios_orchidee_send_field("gpptree",histvar/dt_sechiba) 962 963 CALL xios_orchidee_send_field("nee",co2_flux/dt_sechiba) 955 CALL xios_orchidee_send_field("nee",co2_flux/1.e3/one_day) 964 956 CALL xios_orchidee_send_field("drysoil_frac",drysoil_frac) 965 957 CALL xios_orchidee_send_field("vevapflo",vevapflo/dt_sechiba) … … 1133 1125 1134 1126 IF ( ok_stomate ) THEN 1135 CALL histwrite_p(hist_id, 'nee', kjit, co2_flux , kjpindex*nvm, indexveg)1127 CALL histwrite_p(hist_id, 'nee', kjit, co2_flux/1.e3/one_day, kjpindex*nvm, indexveg) 1136 1128 ENDIF 1137 1129 … … 1242 1234 CALL histwrite_p(hist2_id, 'cimean', kjit, cimean, kjpindex*nvm, indexveg) 1243 1235 1244 IF ( ok_stomate ) THEN 1245 CALL histwrite_p(hist2_id, 'nee', kjit, co2_flux , kjpindex*nvm, indexveg)1236 IF ( ok_stomate ) THEN 1237 CALL histwrite_p(hist2_id, 'nee', kjit, co2_flux/1.e3/one_day, kjpindex*nvm, indexveg) 1246 1238 ENDIF 1247 1239 ELSE -
branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/slowproc.f90
r6145 r6319 248 248 frac_nobio, njsc, veget_max, fraclut, & 249 249 nwdfraclut, tot_bare_soil,totfrac_nobio, qsintmax, & 250 co2_ flux, co2_to_bm, fco2_lu,temp_growth)250 co2_to_bm, temp_growth) 251 251 252 252 !! 0.1 Input variables … … 267 267 268 268 !! 0.2 Output variables 269 REAL(r_std), DIMENSION (kjpindex,nvm), INTENT(out) :: co2_flux !! CO2 flux per average ground area (gC m^{-2} dt_stomate^{-1})270 269 REAL(r_std), DIMENSION (kjpindex,nvm), INTENT(out) :: co2_to_bm !! Virtual gpp per average ground area (gC m^{-2} dt_stomate^{-1}) 271 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_lu !! CO2 flux from land-use (without forest management) (gC m^{-2} dt_stomate^{-1})272 270 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: temp_growth !! Growth temperature (°C) - Is equal to t2m_month 273 271 INTEGER(i_std), DIMENSION(kjpindex), INTENT(out) :: njsc !! Index of the dominant soil textural class in the grid cell (1-nscm, unitless) … … 322 320 contfrac, totfrac_nobio, clayfraction, temp_air, & 323 321 lai, veget, veget_max, & 324 co2_flux, co2_to_bm, fco2_lu, & 325 deadleaf_cover, assim_param, temp_growth ) 322 co2_to_bm, deadleaf_cover, assim_param, temp_growth ) 326 323 ELSE 327 324 !! ok_stomate is not activated 328 325 !! Define the CO2 fluxes to zero (no carbone cycle) 329 co2_flux(:,:) = zero330 326 co2_to_bm(:,:) = zero 331 327 ENDIF … … 383 379 !! RECENT CHANGE(S): None 384 380 !! 385 !! MAIN OUTPUT VARIABLE(S): ::co2_flux, ::fco2_lu, ::lai, ::height, ::veget, ::frac_nobio,381 !! MAIN OUTPUT VARIABLE(S): ::co2_flux, ::fco2_lu,::fco2_wh, ::fco2_ha, ::lai, ::height, ::veget, ::frac_nobio, 386 382 !! ::veget_max, ::woodharvest, ::totfrac_nobio, ::soiltype, ::assim_param, ::deadleaf_cover, ::qsintmax, 387 383 !! and resp_maint, resp_hetero, resp_growth, npp that are calculated and stored … … 405 401 lai, frac_age, height, veget, frac_nobio, veget_max, totfrac_nobio, qsintmax, & 406 402 rest_id, hist_id, hist2_id, rest_id_stom, hist_id_stom, hist_id_stom_IPCC, & 407 co2_flux, fco2_lu, co2_to_bm, temp_growth, tot_bare_soil) 403 co2_flux, fco2_lu, fco2_wh, fco2_ha, & 404 co2_to_bm, temp_growth, tot_bare_soil) 408 405 409 406 !! INTERFACE DESCRIPTION … … 439 436 !! 0.2 Output variables 440 437 REAL(r_std), DIMENSION (kjpindex,nvm), INTENT(out) :: co2_flux !! CO2 flux per average ground area (gC m^{-2} dt_stomate^{-1}) 438 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_lu !! CO2 flux from land-use (without forest management) (gC m^{-2} dt_stomate^{-1}) 439 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_wh !! CO2 Flux to Atmosphere from Wood Harvesting (gC m^{-2} dt_stomate^{-1}) 440 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_ha !! CO2 Flux to Atmosphere from Crop Harvesting (gC m^{-2} dt_stomate^{-1}) 441 441 REAL(r_std), DIMENSION (kjpindex,nvm), INTENT(out) :: co2_to_bm !! virtual gpp flux per average ground area (gC m^{-2} dt_stomate^{-1}) 442 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: fco2_lu !! CO2 flux from land-use (without forest management) (gC m^{-2} dt_stomate^{-1})443 442 REAL(r_std),DIMENSION (kjpindex), INTENT (out) :: temp_growth !! Growth temperature (°C) - Is equal to t2m_month 444 443 REAL(r_std), DIMENSION (kjpindex), INTENT(out) :: tot_bare_soil !! Total evaporating bare soil fraction in the mesh … … 550 549 veget_max_new, woodharvest, totfrac_nobio_new, fraclut, & 551 550 rest_id_stom, hist_id_stom, hist_id_stom_IPCC, & 552 co2_flux, fco2_lu, resp_maint,resp_hetero,resp_growth,co2_to_bm,temp_growth) 551 co2_flux, fco2_lu, fco2_wh, fco2_ha, & 552 resp_maint, resp_hetero, resp_growth, co2_to_bm, temp_growth) 553 553 554 554 555 !! 4.2 Output the respiration terms and the net primary … … 615 616 !! Define the CO2 flux from the grid point to zero (no carbone cycle) 616 617 co2_flux(:,:) = zero 618 fco2_lu(:) = zero 619 fco2_wh(:) = zero 620 fco2_ha(:) = zero 617 621 co2_to_bm(:,:) = zero 618 622 ENDIF -
branches/ORCHIDEE_2_2/ORCHIDEE/src_stomate/stomate.f90
r6160 r6319 430 430 !! dimension(#pixels,0:100) 431 431 !$OMP THREADPRIVATE(flux100) 432 REAL(r_std),ALLOCATABLE,SAVE,DIMENSION(:,:) :: co2_flux !! CO2 flux between atmosphere and biosphere 433 !! @tex $(gC m^{-2} one_day^{-1})$ @endtex 434 !$OMP THREADPRIVATE(co2_flux) 432 435 REAL(r_std),ALLOCATABLE,SAVE,DIMENSION(:) :: fco2_lu !! CO2 flux between atmosphere and biosphere from land-use 433 436 !! (without forest management) 434 437 !! @tex $(gC m^{-2} one_day^{-1})$ @endtex 435 438 !$OMP THREADPRIVATE(fco2_lu) 439 REAL(r_std),ALLOCATABLE,SAVE,DIMENSION(:) :: fco2_wh !! CO2 Flux to Atmosphere from Wood Harvesting (positive from atm to land) 440 !! @tex $(gC m^{-2} one_day^{-1})$ @endtex 441 !$OMP THREADPRIVATE(fco2_wh) 442 REAL(r_std),ALLOCATABLE,SAVE,DIMENSION(:) :: fco2_ha !! CO2 Flux to Atmosphere from Crop Harvesting (positive from atm to land) 443 !! @tex $(gC m^{-2} one_day^{-1})$ @endtex 444 !$OMP THREADPRIVATE(fco2_ha) 445 436 446 REAL(r_std),ALLOCATABLE,SAVE,DIMENSION(:) :: convflux !! Release during first year following land cover change 437 447 !! (paper, burned, etc...) … … 630 640 contfrac, totfrac_nobio, clay, temp_air, & 631 641 lai, veget, veget_max, & 632 co2_flux, co2_to_bm_radia, fco2_lu_out, deadleaf_cover, assim_param, temp_growth ) 642 co2_to_bm_radia,deadleaf_cover, assim_param, temp_growth ) 643 633 644 634 645 IMPLICIT NONE … … 656 667 657 668 !! 0.2 Output variables 658 REAL(r_std),DIMENSION(kjpindex,nvm),INTENT(out) :: co2_flux !! CO2 flux between atmosphere and biosphere 669 659 670 REAL(r_std),DIMENSION(kjpindex,nvm),INTENT(out) :: co2_to_bm_radia !! virtual gpp flux between atmosphere and biosphere 660 REAL(r_std),DIMENSION(kjpindex),INTENT(out) :: fco2_lu_out !! CO2 flux between atmosphere and biosphere from land-use (without forest management)661 671 REAL(r_std),DIMENSION(kjpindex),INTENT(out) :: deadleaf_cover !! Fraction of soil covered by dead leaves (unitless) 662 672 REAL(r_std),DIMENSION(kjpindex,nvm,npco2),INTENT(out) :: assim_param !! min+max+opt temperatures (K) & vmax for photosynthesis … … 764 774 765 775 !! 1.4.3.1 Read initial values for STOMATE's variables from the _restart_ file 766 co2_flux(:,:) = zero767 776 768 777 ! Get values from _restart_ file. Note that only ::kjpindex, ::index, ::lalo … … 795 804 litterpart, litter, dead_leaves, & 796 805 carbon, lignin_struc,turnover_time,& 797 fco2_lu,&806 co2_flux, fco2_lu, fco2_wh, fco2_ha, & 798 807 prod10,prod100,flux10, flux100, & 799 808 convflux, cflux_prod10, cflux_prod100, & … … 807 816 MatrixV, VectorU, previous_stock, current_stock, assim_param) 808 817 809 ! Copy module variable fco2_lu into local variable to allow it to be in the argument output list of the subroutine810 fco2_lu_out(:)=fco2_lu(:)811 812 818 !! 1.4.5 Check time step 813 819 … … 1160 1166 !! 1161 1167 !! MAIN OUTPUT VARIABLE(S): deadleaf_cover, assim_param, lai, height, veget, 1162 !! veget_max, resp_maint, 1163 !! resp_hetero,resp_growth, co2_flux, fco2_lu_out.1168 !! veget_max, resp_maint, resp_hetero, resp_growth, 1169 !! co2_flux_out, fco2_lu_out, fco2_wh_out, fco2_ha_out. 1164 1170 !! 1165 1171 !! REFERENCES : … … 1183 1189 & veget_max_new, woodharvest, totfrac_nobio_new, fraclut, & 1184 1190 & rest_id_stom, hist_id_stom, hist_id_stom_IPCC, & 1185 & co2_flux, fco2_lu_out, resp_maint,resp_hetero,resp_growth,co2_to_bm_radia,temp_growth) 1191 & co2_flux_out, fco2_lu_out, fco2_wh_out, fco2_ha_out, & 1192 & resp_maint, resp_hetero, resp_growth, co2_to_bm_radia, temp_growth) 1186 1193 1187 1194 IMPLICIT NONE … … 1236 1243 !! 0.2 Output variables 1237 1244 1238 REAL(r_std),DIMENSION(kjpindex,nvm),INTENT(out) :: co2_flux 1245 REAL(r_std),DIMENSION(kjpindex,nvm),INTENT(out) :: co2_flux_out !! CO2 flux between atmosphere and biosphere per 1239 1246 !! average ground area 1240 1247 !! @tex $(gC m^{-2} dt_sechiba^{-1})$ @endtex 1241 1248 REAL(r_std),DIMENSION(kjpindex),INTENT(out) :: fco2_lu_out !! CO2 flux between atmosphere and biosphere from 1242 !! land-use (without forest management) 1243 !! @tex $(gC m^{-2} dt_stomate^{-1})$ @endtex 1249 !! land-use (without forest management) (gC/m2/dt_stomate) 1250 REAL(r_std),DIMENSION(kjpindex),INTENT(out) :: fco2_wh_out !! CO2 Flux to Atmosphere from Wood Harvesting (gC/m2/dt_stomate) 1251 REAL(r_std),DIMENSION(kjpindex),INTENT(out) :: fco2_ha_out !! CO2 Flux to Atmosphere from Crop Harvesting (gC/m2/dt_stomate) 1244 1252 REAL(r_std),DIMENSION(kjpindex,nvm),INTENT(out) :: resp_maint !! Maitenance component of autotrophic respiration in 1245 1253 !! @tex $(gC m^{-2} dt_stomate^{-1})$ @endtex … … 1599 1607 & Tseason, Tmin_spring_time, begin_leaves, onset_date) 1600 1608 1609 1601 1610 !! 5.3.2 Calculate the total CO2 flux from land use change 1602 fco2_lu(:) = convflux(:) & 1603 & + cflux_prod10(:) & 1604 & + cflux_prod100(:) & 1605 & + harvest_above(:) & 1606 & + convflux_harvest(:) & 1607 & + cflux_prod10_harvest(:) & 1608 & + cflux_prod100_harvest(:) 1611 1612 ! CO2 from land-use change 1613 fco2_lu(:) = convflux(:) + cflux_prod10(:) + cflux_prod100(:) 1614 1615 ! CO2 from wood harvest 1616 fco2_wh(:) = convflux_harvest(:) + cflux_prod10_harvest(:) + cflux_prod100_harvest(:) 1609 1617 1618 ! CO2 from harvest 1619 fco2_ha(:) = harvest_above(:) 1620 1610 1621 !! 5.4 Calculate veget and veget_max 1611 1622 veget_max(:,:) = zero … … 1758 1769 CALL xios_orchidee_send_field("rhSoil",SUM(resp_hetero_soil*veget_cov_max,dim=2)/1e3) 1759 1770 CALL xios_orchidee_send_field("rhLitter",SUM(resp_hetero_litter*veget_cov_max,dim=2)/1e3) 1760 1761 1771 1772 ! Calculate co2_flux as (-1)*nep_daily*veget_cov_max. 1773 ! This variable will be used for the coupling to LMDZ for ESM configuration. 1774 co2_flux(:,:) = (resp_hetero_d(:,:) + resp_maint_d(:,:) + resp_growth_d(:,:) & 1775 + co2_fire(:,:) - gpp_daily(:,:))*veget_cov_max 1776 1762 1777 IF ( hist_id_stom_IPCC > 0 ) THEN 1763 1778 vartmp(:) = SUM(nep_daily*veget_cov_max,dim=2)/1e3/one_day*contfrac … … 1846 1861 !! 6. Outputs from Stomate 1847 1862 1848 ! co2_flux receives a value from STOMATE only if STOMATE is activated.1849 ! Otherwise, the calling hydrological module must do this itself.1850 1851 1863 !! 6.1 Respiration and fluxes 1852 1864 resp_maint(:,:) = resp_maint_radia(:,:)*veget_cov_max(:,:) … … 1856 1868 resp_hetero(:,:) = resp_hetero_radia(:,:)*veget_cov_max(:,:) 1857 1869 1858 !! 6.2 Derived CO2 fluxes1859 ! CO2 flux in gC m^{-2} s^{-1} (positive towards the atmosphere) is sum of:1860 ! (1) heterotrophic respiration from ground + (2) maintenance respiration1861 ! from the plants + (3) growth respiration from the plants + (4) co21862 ! emissions from fire - (5) co2 taken up in the DGVM to establish1863 ! saplings - (6) co2 taken up by photosyntyhesis1864 ! co2_to_bm is not included here as it is already encounted in the gpp1865 co2_flux(:,:) = resp_hetero(:,:) + resp_maint(:,:) + resp_growth(:,:) &1866 & + co2_fire(:,:)*veget_cov_max(:,:)*dt_sechiba/one_day &1867 & - gpp(:,:)1868 1869 1870 temp_growth(:)=t2m_month(:)-tp_00 1870 1871 1871 ! Copy module variable fco2_lu into local variable to allow it to be in the argument output list of the subroutine 1872 1873 ! Copy module variables into local variables to allow them to be in the argument output list of the subroutine 1874 co2_flux_out(:,:)=co2_flux(:,:) 1872 1875 fco2_lu_out(:)=fco2_lu(:) 1876 fco2_wh_out(:)=fco2_wh(:) 1877 fco2_ha_out(:)=fco2_ha(:) 1873 1878 1874 1879 … … 2123 2128 litterpart, litter, dead_leaves, & 2124 2129 carbon, lignin_struc,turnover_time,& 2125 fco2_lu,&2130 co2_flux, fco2_lu, fco2_wh, fco2_ha, & 2126 2131 prod10,prod100,flux10, flux100, & 2127 2132 convflux, cflux_prod10, cflux_prod100, & … … 3080 3085 ENDIF 3081 3086 3087 ALLOCATE (co2_flux(kjpindex,nvm), stat=ier) 3088 l_error = l_error .OR. (ier /= 0) 3089 IF (l_error) THEN 3090 WRITE(numout,*) 'Memory allocation error for co2_flux. We stop. We need kjpindex words',kjpindex,nvm 3091 STOP 'stomate_init' 3092 ENDIF 3093 3082 3094 ALLOCATE (fco2_lu(kjpindex), stat=ier) 3083 3095 l_error = l_error .OR. (ier /= 0) 3084 3096 IF (l_error) THEN 3085 3097 WRITE(numout,*) 'Memory allocation error for fco2_lu. We stop. We need kjpindex words',kjpindex 3098 STOP 'stomate_init' 3099 ENDIF 3100 3101 ALLOCATE (fco2_wh(kjpindex), stat=ier) 3102 l_error = l_error .OR. (ier /= 0) 3103 IF (l_error) THEN 3104 WRITE(numout,*) 'Memory allocation error for fco2_wh. We stop. We need kjpindex words',kjpindex 3105 STOP 'stomate_init' 3106 ENDIF 3107 3108 ALLOCATE (fco2_ha(kjpindex), stat=ier) 3109 l_error = l_error .OR. (ier /= 0) 3110 IF (l_error) THEN 3111 WRITE(numout,*) 'Memory allocation error for fco2_ha. We stop. We need kjpindex words',kjpindex 3086 3112 STOP 'stomate_init' 3087 3113 ENDIF … … 3594 3620 IF ( ALLOCATED (horip11_index)) DEALLOCATE (horip11_index) 3595 3621 IF ( ALLOCATED (horip101_index)) DEALLOCATE (horip101_index) 3622 IF ( ALLOCATED (co2_flux)) DEALLOCATE (co2_flux) 3596 3623 IF ( ALLOCATED (fco2_lu)) DEALLOCATE (fco2_lu) 3624 IF ( ALLOCATED (fco2_wh)) DEALLOCATE (fco2_wh) 3625 IF ( ALLOCATED (fco2_ha)) DEALLOCATE (fco2_ha) 3597 3626 IF ( ALLOCATED (prod10)) DEALLOCATE (prod10) 3598 3627 IF ( ALLOCATED (prod100)) DEALLOCATE (prod100) -
branches/ORCHIDEE_2_2/ORCHIDEE/src_stomate/stomate_io.f90
r6160 r6319 80 80 & litterpart, litter, dead_leaves, & 81 81 & carbon, lignin_struc,turnover_time, & 82 & fco2_lu, &82 & co2_flux, fco2_lu, fco2_wh, fco2_ha, & 83 83 & prod10,prod100,flux10, flux100, & 84 84 & convflux, cflux_prod10, cflux_prod100, & … … 327 327 ! products remaining in the 10/100 year-turnover pool after the annual release for each compartment 328 328 ! (10 or 100 + 1 : input from year of land cover change) 329 REAL(r_std),DIMENSION(npts, nvm),INTENT(out) :: co2_flux 329 330 REAL(r_std),DIMENSION(npts),INTENT(out) :: fco2_lu 331 REAL(r_std),DIMENSION(npts),INTENT(out) :: fco2_wh 332 REAL(r_std),DIMENSION(npts),INTENT(out) :: fco2_ha 330 333 REAL(r_std),DIMENSION(npts,0:10),INTENT(out) :: prod10 331 334 REAL(r_std),DIMENSION(npts,0:100),INTENT(out) :: prod100 … … 1034 1037 !- 1035 1038 ! Read from restart file or set to zero if the variables or restart file were not found 1039 1040 var_name = 'co2_flux' 1041 CALL restget_p (rest_id_stomate, var_name, nbp_glo, nvm, 1, itime, & 1042 .TRUE., co2_flux, 'gather', nbp_glo, index_g) 1043 IF (ALL(co2_flux(:,:) == val_exp)) co2_flux(:,:) = zero 1044 1036 1045 var_name = 'fco2_lu' 1037 1046 CALL restget_p (rest_id_stomate, var_name, nbp_glo, 1, 1, itime, & 1038 1047 .TRUE., fco2_lu, 'gather', nbp_glo, index_g) 1039 1048 IF (ALL(fco2_lu(:) == val_exp)) fco2_lu(:) = zero 1049 1050 var_name = 'fco2_wh' 1051 CALL restget_p (rest_id_stomate, var_name, nbp_glo, 1, 1, itime, & 1052 .TRUE., fco2_wh, 'gather', nbp_glo, index_g) 1053 IF (ALL(fco2_wh(:) == val_exp)) fco2_wh(:) = zero 1054 1055 var_name = 'fco2_ha' 1056 CALL restget_p (rest_id_stomate, var_name, nbp_glo, 1, 1, itime, & 1057 .TRUE., fco2_ha, 'gather', nbp_glo, index_g) 1058 IF (ALL(fco2_ha(:) == val_exp)) fco2_ha(:) = zero 1059 1040 1060 1041 1061 IF (vegetmap_reset) THEN … … 1332 1352 & litterpart, litter, dead_leaves, & 1333 1353 & carbon, lignin_struc, turnover_time, & 1334 & fco2_lu,&1354 & co2_flux, fco2_lu, fco2_wh, fco2_ha, & 1335 1355 & prod10,prod100 ,flux10, flux100, & 1336 1356 & convflux, cflux_prod10, cflux_prod100, & … … 1570 1590 ! products remaining in the 10/100 year-turnover pool after the annual release for each compartment 1571 1591 ! (10 or 100 + 1 : input from year of land cover change) 1592 REAL(r_std),DIMENSION(npts,nvm),INTENT(in) :: co2_flux 1572 1593 REAL(r_std),DIMENSION(npts),INTENT(in) :: fco2_lu 1594 REAL(r_std),DIMENSION(npts),INTENT(in) :: fco2_wh 1595 REAL(r_std),DIMENSION(npts),INTENT(in) :: fco2_ha 1573 1596 REAL(r_std),DIMENSION(npts,0:10),INTENT(in) :: prod10 1574 1597 REAL(r_std),DIMENSION(npts,0:100),INTENT(in) :: prod100 … … 2074 2097 ! 18 land cover change 2075 2098 !- 2099 var_name = 'co2_flux' 2100 CALL restput_p (rest_id_stomate, var_name, nbp_glo, nvm, 1, itime, & 2101 & co2_flux, 'scatter', nbp_glo, index_g) 2076 2102 var_name = 'fco2_lu' 2077 2103 CALL restput_p (rest_id_stomate, var_name, nbp_glo, 1, 1, itime, & 2078 2104 & fco2_lu, 'scatter', nbp_glo, index_g) 2105 var_name = 'fco2_wh' 2106 CALL restput_p (rest_id_stomate, var_name, nbp_glo, 1, 1, itime, & 2107 & fco2_wh, 'scatter', nbp_glo, index_g) 2108 var_name = 'fco2_ha' 2109 CALL restput_p (rest_id_stomate, var_name, nbp_glo, 1, 1, itime, & 2110 & fco2_ha, 'scatter', nbp_glo, index_g) 2111 2079 2112 var_name = 'prod10' 2080 2113 CALL restput_p (rest_id_stomate, var_name, nbp_glo, 11, 1, itime, & -
branches/ORCHIDEE_2_2/ORCHIDEE/src_xml/field_def_orchidee.xml
r6160 r6319 128 128 <field id="gppcrop" name="gppCrop" long_name="Gross Primary Production on crop tiles" unit="kgC/m^2/s" > this/1000 </field> 129 129 <field id="gpptree" name="gppTree" long_name="Gross Primary Production on tree tiles" unit="kgC/m^2/s" > this/1000 </field> 130 <field id="nee" name="nee" long_name="Net Ecosystem Exchange" unit=" gC/m^2/s" grid_ref="grid_nvm"/>130 <field id="nee" name="nee" long_name="Net Ecosystem Exchange" unit="kgC/m^2/s" grid_ref="grid_nvm"/> 131 131 <field id="maint_resp" name="maint_resp" long_name="Maintenance respiration per PFT" unit="gC/m^2/s" grid_ref="grid_nvm"/> 132 132 <field id="hetero_resp" name="hetero_resp" long_name="Heterotrophic respiration per PFT" unit="gC/m^2/s" grid_ref="grid_nvm"/> … … 360 360 <field id="mrro_lut" name="mrroLut" long_name="Total runoff from land use tile" unit="kg m-2 s-1" grid_ref="grid_nlut"/> 361 361 <field id="gpplut" name="gppLut" long_name="Gross primary productivity on Landuse tiles" unit="kgC m-2 s-1" grid_ref="grid_nlut" /> 362 <field id="znetco2" name="znetco2" long_name="Sum CO2 flux over PFTs (variable in interface to LMDZ)" unit="kgC m-2 s-1" /> 362 363 <field id="zcarblu" name="zcarblu" long_name="Land Cover Change CO2 flux (variable in interface to LMDZ)" unit="kgC m-2 s-1" /> 363 <field id="znetco2" name="znetco2" long_name="Sum CO2 flux over PFTs (variable in interface to LMDZ)" unit="kgC m-2 s-1" /> 364 <field id="zcarbwh" name="zcarbwh" long_name="Wood harvest CO2 flux (variable in interface to LMDZ)" unit="kgC m-2 s-1" /> 365 <field id="zcarbha" name="zcarbha" long_name="Crop harvesting CO2 flux (variable in interface to LMDZ)" unit="kgC m-2 s-1" /> 364 366 </field_group> 365 367 -
branches/ORCHIDEE_2_2/ORCHIDEE/src_xml/file_def_orchidee.xml
r6160 r6319 342 342 <field field_ref="wilt" grid_ref="grid_nslm_out" level="11"/> 343 343 <field field_ref="fldcapacity" grid_ref="grid_nslm_out" level="11"/> 344 <field field_ref="znetco2" level="11" /> 345 <field field_ref="zcarblu" level="11" /> 346 <field field_ref="zcarbwh" level="11" /> 347 <field field_ref="zcarbha" level="11" /> 344 348 <field field_ref="frac_snow_veg" level="12"/> 345 349 <field field_ref="frac_snow_nobio" grid_ref="grid_nnobio_out" level="12"/> … … 348 352 <field field_ref="snowtemp_read_current" grid_ref="grid_nsnow_out" level="12"/> 349 353 <field field_ref="mask_snow_interp_out" grid_ref="grid_nsnow_out" level="12"/> 350 <field field_ref="zcarblu" level="12" />351 <field field_ref="znetco2" level="12" />352 354 </field_group> 353 355 </file> … … 562 564 <field field_ref="snowdepth" level="11"/> 563 565 <field field_ref="mc" grid_ref="grid_nslm_nstm_out" level="0"/> <!-- mc is a 4 dimensional variable --> 564 </field_group> 566 <field field_ref="znetco2" level="11" /> 567 <field field_ref="zcarblu" level="11" /> 568 <field field_ref="zcarbwh" level="11" /> 569 <field field_ref="zcarbha" level="11" /> 570 </field_group> 565 571 </file> 566 572
Note: See TracChangeset
for help on using the changeset viewer.