Changeset 4298 for LMDZ6/trunk
- Timestamp:
- Oct 17, 2022, 10:15:06 AM (2 years ago)
- Location:
- LMDZ6/trunk
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/DefLists/file_def_histday_lmdz.xml
r4248 r4298 196 196 <field field_ref="cdrh" level="10" /> 197 197 <field field_ref="cldl" level="1" /> 198 <field field_ref="cumCO2" level="5" /> 198 <field field_ref="cumCO2" level="5" /> <!-- Added PC --> 199 199 <field field_ref="cldm" level="1" /> 200 200 <field field_ref="cldh" level="1" /> … … 245 245 <field field_ref="colO3_strat" level="6" /> <!-- Added ThL --> 246 246 <field field_ref="colO3_trop" level="6" /> <!-- Added ThL --> 247 <field field_ref="flx_co2_ocean" level="5" /> <!-- Added PC --> 248 <field field_ref="flx_co2_land" level="5" /> <!-- Added PC --> 249 <field field_ref="flx_co2_ocean_cor" level="5" /> <!-- Added PC --> 250 <field field_ref="flx_co2_land_cor" level="5" /> <!-- Added PC --> 251 <field field_ref="flx_co2_ff" level="5" /> <!-- Added PC --> 252 <field field_ref="flx_co2_bb" level="5" /> <!-- Added PC --> 253 247 254 248 255 <field_group operation="average" detect_missing_value=".true."> … … 444 451 <!-- VARS 3D --> 445 452 <field_group operation="average" grid_ref="grid_out_presnivs"> 446 <field field_ref="CO2" level="5" /> 453 <field field_ref="CO2" level="5" /> <!-- Added PC --> 447 454 <field field_ref="dCO2_vdf" level="5" /> 448 455 <field field_ref="dCO2_the" level="5" /> -
LMDZ6/trunk/DefLists/file_def_histhf_lmdz.xml
r4248 r4298 430 430 <field field_ref="dqthe2d" level="10" /> 431 431 <field field_ref="dqajs2d" level="10" /> 432 <field field_ref="flx_co2_ocean" level="10" /> <!-- Added PC --> 433 <field field_ref="flx_co2_land" level="10" /> <!-- Added PC --> 434 <field field_ref="flx_co2_ocean_cor" level="10" /> <!-- Added PC --> 435 <field field_ref="flx_co2_land_cor" level="10" /> <!-- Added PC --> 436 <field field_ref="flx_co2_ff" level="10" /> <!-- Added PC --> 437 <field field_ref="flx_co2_bb" level="10" /> <!-- Added PC --> 438 432 439 </field_group> 433 440 … … 464 471 <!-- VARS 3D --> 465 472 <field_group operation="average" grid_ref="grid_out_presnivs"> 473 <field field_ref="CO2" level="10" /> <!-- Added PC --> 466 474 <field field_ref="tke" level="10" /> 467 475 <field field_ref="tke_ter" level="10" /> -
LMDZ6/trunk/DefLists/file_def_histmth_lmdz.xml
r4248 r4298 234 234 <field field_ref="cldt" level="1" /> 235 235 <field field_ref="cldq" level="1" /> 236 <field field_ref="cumCO2" level="5" /> <!-- Added PC --> 236 237 <field field_ref="lwp" level="1" /> 237 238 <field field_ref="iwp" level="1" /> … … 498 499 <!-- VARS 3D --> 499 500 <field_group operation="average" grid_ref="grid_out_presnivs"> 501 <field field_ref="CO2" level="5" /> <!-- Added PC --> 502 <field field_ref="dCO2_vdf" level="5" /> <!-- Added PC --> 503 <field field_ref="dCO2_the" level="5" /> <!-- Added PC --> 504 <field field_ref="dCO2_con" level="5" /> <!-- Added PC --> 500 505 <field field_ref="tke" level="7" /> 501 506 <field field_ref="tke_ter" level="10" /> -
LMDZ6/trunk/libf/phylmd/carbon_cycle_mod.F90
r3876 r4298 237 237 IF (.NOT.ALLOCATED(fco2_land)) ALLOCATE(fco2_land(klon), stat=ierr) 238 238 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land',1) 239 fco2_land(1:klon) = 0.240 239 241 240 IF (.NOT.ALLOCATED(fco2_land_nbp)) ALLOCATE(fco2_land_nbp(klon), stat=ierr) 242 241 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_nbp',1) 243 fco2_land_nbp(1:klon) = 0.244 242 245 243 IF (.NOT.ALLOCATED(fco2_land_nep)) ALLOCATE(fco2_land_nep(klon), stat=ierr) 246 244 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_nep',1) 247 fco2_land_nep(1:klon) = 0.248 245 249 246 IF (.NOT.ALLOCATED(fco2_land_fLuc)) ALLOCATE(fco2_land_fLuc(klon), stat=ierr) 250 247 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_fLuc',1) 251 fco2_land_fLuc(1:klon) = 0.252 248 253 249 IF (.NOT.ALLOCATED(fco2_land_fwoodharvest)) ALLOCATE(fco2_land_fwoodharvest(klon), stat=ierr) 254 250 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_fwoodharvest',1) 255 fco2_land_fwoodharvest(1:klon) = 0.256 251 257 252 IF (.NOT.ALLOCATED(fco2_land_fHarvest)) ALLOCATE(fco2_land_fHarvest(klon), stat=ierr) 258 253 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_fHarvest',1) 259 fco2_land_fHarvest(1:klon) = 0.260 254 261 255 IF (.NOT.ALLOCATED(fco2_ff)) ALLOCATE(fco2_ff(klon), stat=ierr) 262 256 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_ff',1) 263 fco2_ff(1:klon) = 0.264 257 265 258 IF (.NOT.ALLOCATED(fco2_bb)) ALLOCATE(fco2_bb(klon), stat=ierr) 266 259 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_bb',1) 267 fco2_bb(1:klon) = 0.268 260 269 261 IF (.NOT.ALLOCATED(fco2_ocean)) ALLOCATE(fco2_ocean(klon), stat=ierr) 270 262 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_ocean',1) 271 fco2_ocean(1:klon) = 0.272 263 273 264 IF (.NOT.ALLOCATED(fco2_ocean_cor)) ALLOCATE(fco2_ocean_cor(klon), stat=ierr) 274 265 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_ocean_cor',1) 275 fco2_ocean_cor(1:klon) = 0. 266 276 267 IF (.NOT.ALLOCATED(fco2_land_cor)) ALLOCATE(fco2_land_cor(klon), stat=ierr) 277 268 IF (ierr /= 0) CALL abort_physic('carbon_cycle_init', 'pb in allocation fco2_land_cor',1) 278 fco2_land_cor(1:klon) = 0.279 269 280 270 ENDIF -
LMDZ6/trunk/libf/phylmd/phyetat0.F90
r4263 r4298 25 25 USE infotrac_phy, ONLY: nqtot, nbtr, type_trac, types_trac, tracers 26 26 USE traclmdz_mod, ONLY: traclmdz_from_restart 27 USE carbon_cycle_mod, ONLY: carbon_cycle_ tr, carbon_cycle_cpl, co2_send27 USE carbon_cycle_mod, ONLY: carbon_cycle_init, carbon_cycle_cpl, carbon_cycle_tr, carbon_cycle_rad, co2_send, RCO2_glo 28 28 USE indice_sol_mod, ONLY: nbsrf, is_ter, epsfra, is_lic, is_oce, is_sic 29 29 USE ocean_slab_mod, ONLY: nslay, tslab, seaice, tice, ocean_slab_init … … 113 113 114 114 ! co2_ppm : value from the previous time step 115 116 ! co2_ppm0 : initial value of atmospheric CO2 (from create_etat0_limit.e .def) 117 co2_ppm0 = 284.32 118 ! when no initial value is available e.g., from a restart 119 ! this variable must be set in a .def file which will then be 120 ! used by the conf_phys_m.F90 routine. 121 ! co2_ppm0 = 284.32 (illustrative example on how to set the variable in .def 122 ! file, for a pre-industrial CO2 concentration value) 123 115 124 IF (carbon_cycle_tr .OR. carbon_cycle_cpl) THEN 116 125 co2_ppm = tab_cntrl(3) 117 126 RCO2 = co2_ppm * 1.0e-06 * RMCO2 / RMD 127 IF (tab_cntrl(17) > 0. .AND. carbon_cycle_rad) THEN 128 RCO2_glo = tab_cntrl(17) 129 ELSE 130 RCO2_glo = co2_ppm0 * 1.0e-06 * RMCO2 / RMD 131 ENDIF 118 132 ! ELSE : keep value from .def 119 133 ENDIF 120 121 ! co2_ppm0 : initial value of atmospheric CO2 (from create_etat0_limit.e .def)122 ! co2_ppm0 = tab_cntrl(16)123 ! initial value for interactive CO2 run when there is no tracer field for CO2 in restart124 co2_ppm0=284.32125 134 126 135 solaire_etat0 = tab_cntrl(4) … … 145 154 clesphy0(7)=tab_cntrl( 11 ) 146 155 clesphy0(8)=tab_cntrl( 12 ) 156 clesphy0(9)=tab_cntrl( 17 ) 147 157 148 158 ! set time iteration … … 454 464 ALLOCATE(co2_send(klon), stat=ierr) 455 465 IF (ierr /= 0) CALL abort_physic('phyetat0', 'pb allocation co2_send', 1) 456 found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm) 466 !found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm) 467 found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm0) 457 468 ENDIF 458 469 ELSE IF (type_trac == 'lmdz') THEN -
LMDZ6/trunk/libf/phylmd/phyredem.F90
r4263 r4298 36 36 USE traclmdz_mod, ONLY : traclmdz_to_restart 37 37 USE infotrac_phy, ONLY: type_trac, types_trac, nqtot, tracers, nbtr 38 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send 38 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send, carbon_cycle_rad, RCO2_glo 39 39 USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra 40 40 USE surface_data, ONLY: type_ocean, version_ocean … … 108 108 109 109 ! co2_ppm0 : initial value of atmospheric CO2 110 tab_cntrl(16) = co2_ppm0 110 ! tab_cntrl(16) = co2_ppm0 111 112 ! PC -- initial value of RCO2 for the radiation scheme 113 ! tab_cntrl(17) = co2_ppm * 1.0e-06 * RMCO2 / RMD 114 IF (carbon_cycle_rad) tab_cntrl(17) = RCO2_glo 115 !PRINT*, "PC : phyredem RCO2_glo =",RCO2_glo 111 116 112 117 DO pass=1,2 ! pass=1 netcdf definition ; pass=2 netcdf write … … 140 145 141 146 CALL put_field(pass,"FLIC", "fraction glace de terre", pctsrf(:, is_lic)) 142 143 147 ! 3. fraction ocean 144 148 -
LMDZ6/trunk/libf/phylmd/physiq_mod.F90
r4236 r4298 4320 4320 ! 4321 4321 !--interactive CO2 in ppm from carbon cycle 4322 IF (carbon_cycle_rad.AND..NOT.debut) THEN 4323 RCO2=RCO2_glo 4324 ENDIF 4322 IF (carbon_cycle_rad) RCO2=RCO2_glo 4325 4323 ! 4326 4324 IF (prt_level .GE.10) THEN -
LMDZ6/trunk/libf/phylmd/phytrac_mod.F90
r4293 r4298 81 81 IF(ANY(types_trac == 'co2i') .OR. ANY(types_trac == 'inco')) CALL tracco2i_init() 82 82 83 ! -- types_trac == 'co2i' ! PC 84 ! -- CO2 interactif -- 85 ! -- source is updated with FF and BB emissions 86 ! -- and net fluxes from ocean and orchidee 87 ! -- sign convention : positive into the atmosphere 83 88 84 89 END SUBROUTINE phytrac_init -
LMDZ6/trunk/libf/phylmd/tracco2i_mod.F90
r4260 r4298 103 103 IF (debutphy) THEN 104 104 105 ! Initiali sation de tr_seri(id_CO2) si pas initialise105 ! Initialization of tr_seri(id_CO2) If it is not initialized 106 106 IF (MAXVAL(tr_seri(:,:,id_CO2)).LT.1.e-15) THEN 107 107 tr_seri(:,:,id_CO2)=co2_ppm0*1.e-6/RMD*RMCO2 !--initialised from co2_ppm0 in rdem … … 310 310 RCO2_tot=SUM(co2_glo*m_air_glo) !--unit kg CO2 311 311 RCO2_glo=RCO2_tot/SUM(m_air_glo) !--unit kg CO2 / kg air 312 ! the following operation is only to maintain precision consistency 313 ! of RCO2_glo which differs whether it is directly computed or read from 314 ! a restart file (after having been computed) 315 RCO2_glo = FLOAT(INT(RCO2_glo * 1e8))/1e8 312 316 PRINT *,'tracco2i: global CO2 in ppm =', RCO2_glo*1.e6*RMD/RMCO2 313 317 PRINT *,'tracco2i: total CO2 in kg =', RCO2_tot … … 316 320 CALL bcast(RCO2_glo) 317 321 day_pre=day_cur 322 318 323 !--if not carbon_cycle_tr, then we reinitialize the CO2 each day to its global mean value 319 324 IF (.NOT.carbon_cycle_tr) THEN -
LMDZ6/trunk/libf/phylmdiso/phyetat0.F90
r4170 r4298 33 33 USE infotrac_phy, ONLY: nqtot, nbtr, types_trac, tracers 34 34 USE traclmdz_mod, ONLY: traclmdz_from_restart 35 USE carbon_cycle_mod, ONLY: carbon_cycle_ tr, carbon_cycle_cpl, co2_send35 USE carbon_cycle_mod, ONLY: carbon_cycle_init, carbon_cycle_cpl, carbon_cycle_tr, carbon_cycle_rad, co2_send, RCO2_glo 36 36 USE indice_sol_mod, ONLY: nbsrf, is_ter, epsfra, is_lic, is_oce, is_sic 37 37 USE ocean_slab_mod, ONLY: nslay, tslab, seaice, tice, ocean_slab_init … … 134 134 135 135 ! co2_ppm : value from the previous time step 136 137 ! co2_ppm0 : initial value of atmospheric CO2 (from create_etat0_limit.e .def) 138 co2_ppm0 = 284.32 139 ! when no initial value is available e.g., from a restart 140 ! this variable must be set in a .def file which will then be 141 ! used by the conf_phys_m.F90 routine. 142 ! co2_ppm0 = 284.32 (illustrative example on how to set the variable in .def 143 ! file, for a pre-industrial CO2 concentration value) 144 136 145 IF (carbon_cycle_tr .OR. carbon_cycle_cpl) THEN 137 146 co2_ppm = tab_cntrl(3) 138 147 RCO2 = co2_ppm * 1.0e-06 * RMCO2 / RMD 148 IF (tab_cntrl(17) > 0. .AND. carbon_cycle_rad) THEN 149 RCO2_glo = tab_cntrl(17) 150 ELSE 151 RCO2_glo = co2_ppm0 * 1.0e-06 * RMCO2 / RMD 152 ENDIF 139 153 ! ELSE : keep value from .def 140 154 ENDIF 141 142 ! co2_ppm0 : initial value of atmospheric CO2 (from create_etat0_limit.e .def)143 ! co2_ppm0 = tab_cntrl(16)144 ! initial value for interactive CO2 run when there is no tracer field for CO2 in restart145 co2_ppm0=284.32146 155 147 156 solaire_etat0 = tab_cntrl(4) … … 166 175 clesphy0(7)=tab_cntrl( 11 ) 167 176 clesphy0(8)=tab_cntrl( 12 ) 177 clesphy0(9)=tab_cntrl( 17 ) 168 178 169 179 ! set time iteration … … 473 483 ALLOCATE(co2_send(klon), stat=ierr) 474 484 IF (ierr /= 0) CALL abort_physic('phyetat0', 'pb allocation co2_send', 1) 475 found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm )485 found=phyetat0_get(1,co2_send,"co2_send","co2 send",co2_ppm0) 476 486 ENDIF 477 487 ELSE IF (ANY(types_trac == 'lmdz')) THEN -
LMDZ6/trunk/libf/phylmdiso/phyredem.F90
r4170 r4298 45 45 #endif 46 46 #endif 47 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send 47 USE carbon_cycle_mod, ONLY : carbon_cycle_cpl, co2_send, carbon_cycle_rad, RCO2_glo 48 48 USE indice_sol_mod, ONLY: nbsrf, is_oce, is_sic, is_ter, is_lic, epsfra 49 49 USE surface_data, ONLY: type_ocean, version_ocean … … 130 130 131 131 ! co2_ppm0 : initial value of atmospheric CO2 132 tab_cntrl(16) = co2_ppm0 132 ! tab_cntrl(16) = co2_ppm0 133 134 ! PC -- initial value of RCO2 for the radiation scheme 135 ! tab_cntrl(17) = co2_ppm * 1.0e-06 * RMCO2 / RMD 136 IF (carbon_cycle_rad) tab_cntrl(17) = RCO2_glo 137 !PRINT*, "PC : phyredem RCO2_glo =",RCO2_glo 133 138 134 139 DO pass=1,2 ! pass=1 netcdf definition ; pass=2 netcdf write -
LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90
r4234 r4298 5497 5497 ! 5498 5498 !--interactive CO2 in ppm from carbon cycle 5499 IF (carbon_cycle_rad.AND..NOT.debut) THEN 5500 RCO2=RCO2_glo 5501 ENDIF 5499 IF (carbon_cycle_rad) RCO2=RCO2_glo 5502 5500 ! 5503 5501 IF (prt_level .GE.10) THEN
Note: See TracChangeset
for help on using the changeset viewer.