Skip to content

Commit 71b773d

Browse files
author
Ian Harman
committed
code changes to sync the science of BLAZE & SIMFIRE
1 parent 18695c9 commit 71b773d

File tree

4 files changed

+166
-86
lines changed

4 files changed

+166
-86
lines changed

core/biogeochem/POP.F90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ MODULE POP_Types
270270
REAL(dp), DIMENSION(NYEAR_HISTORY) :: cat_mortality_history
271271
REAL(dp), DIMENSION(AGEMAX) :: freq_age ! age weighting (by age in y: 0:AGE_MAX-1)
272272
REAL(dp), DIMENSION(AGEMAX) :: biomass_age
273+
REAL(dp) :: rkill
273274
END TYPE Landscape
274275

275276
TYPE POP_TYPE

core/blaze/blaze.F90

Lines changed: 44 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ MODULE BLAZE_MOD
2020
CHARACTER(len=8) :: BLAZE_TSTEP = "annually" ! Call frequency ("daily","monthly","annually")
2121
CHARACTER(len=6) :: SIMFIRE_REGION = "GLOBAL" ! either GLOBAL, EUROPE, ANZ
2222
CHARACTER(len=7) :: BURNT_AREA_SRC = "SIMFIRE" ! either SIMFIRE or NONE !CLN for now!
23+
INTEGER :: IAM ! number of master/worker for diagnostic output reasons
2324
END TYPE TYPE_BLAZE
2425

2526
TYPE TYPE_TURNOVER
@@ -29,6 +30,7 @@ MODULE BLAZE_MOD
2930
REAL, DIMENSION(:,:), ALLOCATABLE :: BLAZEFLX ! To BLAZE!!!
3031

3132
INTEGER, PARAMETER :: NTO = 7 ! Number of TurnOver Parameters ,i.e. #lines below
33+
INTEGER, PARAMETER :: NFLUXES = 14! Number of FLUXES in BLAZE output
3234
INTEGER, PARAMETER :: LEAF = 1
3335
INTEGER, PARAMETER :: WOOD = 2
3436
INTEGER, PARAMETER :: FROOT = 3
@@ -142,7 +144,7 @@ SUBROUTINE INI_BLAZE ( np, LAT, LON, BLAZE)
142144
ALLOCATE ( BLAZE%POP_TO ( np ) )
143145
ALLOCATE ( BLAZE%POP_CWD ( np ) )
144146
ALLOCATE ( BLAZE%POP_STR ( np ) )
145-
ALLOCATE ( BLAZE%FLUXES ( np, 13 ) )
147+
ALLOCATE ( BLAZE%FLUXES ( np, NFLUXES ) )
146148

147149
ALLOCATE( BLAZE%AGLit_g(np,NPOOLS),BLAZE%AGLit_w(np,NPOOLS) )
148150
ALLOCATE( BLAZE%BGLit_g(np,NPOOLS),BLAZE%BGLit_w(np,NPOOLS) )
@@ -175,6 +177,7 @@ SUBROUTINE INI_BLAZE ( np, LAT, LON, BLAZE)
175177
BLAZE%AB = 0.
176178
BLAZE%DEADWOOD = 0.
177179
BLAZE%FSTEP = 'DAILY'
180+
!NESP2pt9 has this as =TRIM(blazeTStep)
178181

179182
BLAZE%LAT = LAT
180183
BLAZE%LON = LON
@@ -374,7 +377,7 @@ SUBROUTINE BLAZE_TURNOVER(AB, CPLANT_g, CPLANT_w, AGL_g, AGL_w, &
374377
REAL, INTENT(IN) :: AB, shootfrac
375378
REAL, INTENT(INOUT) :: CPLANT_w(3) , CPLANT_g(3)
376379
REAL, DIMENSION(3), INTENT(INOUT) :: AGL_w, AGL_g, BGL_w, BGL_g
377-
REAL, INTENT(OUT) :: BT(13)
380+
REAL, INTENT(OUT) :: BT(NFLUXES)
378381
REAL, OPTIONAL, INTENT(IN) :: POP_TO
379382
TYPE(TYPE_TURNOVER) :: MTO(7)
380383
REAL :: fAB
@@ -396,22 +399,23 @@ SUBROUTINE BLAZE_TURNOVER(AB, CPLANT_g, CPLANT_w, AGL_g, AGL_w, &
396399
MTO(SLIT )%TO_ATM = fAB * TO(SLIT )%TO_ATM * AGL_w(STR )
397400
MTO(CLIT )%TO_ATM = fAB * TO(CLIT )%TO_ATM * AGL_w(CWD )
398401

399-
! Diagnostics
402+
! Diagnostics (new order acc to blaze_driver.F90 ll 215ff)
400403
BT( 1) = MTO(LEAF )%TO_ATM
401-
BT( 2) = MTO(WOOD )%TO_ATM
402-
BT( 3) = MTO(LEAF )%TO_STR
403-
BT( 4) = MTO(WOOD )%TO_STR
404-
BT( 5) = MTO(WOOD )%TO_CWD
405-
BT( 6) = MTO(MLIT )%TO_ATM
406-
BT( 7) = MTO(SLIT )%TO_ATM
407-
BT( 8) = MTO(CLIT )%TO_ATM
408-
BT( 9) = MTO(FROOT)%TO_ATM
409-
BT(10) = MTO(FROOT)%TO_STR
410-
BT(11) = AB * CPLANT_g (LEAF)
411-
BT(12) = AB * AGL_g(METB)
412-
BT(13) = AB * AGL_g(STR )
404+
BT( 3) = MTO(WOOD )%TO_ATM
405+
BT( 7) = MTO(LEAF )%TO_STR
406+
BT( 9) = MTO(WOOD )%TO_STR
407+
BT(10) = MTO(WOOD )%TO_CWD
413408

409+
BT( 4) = MTO(MLIT )%TO_ATM
410+
BT( 5) = MTO(SLIT )%TO_ATM
411+
BT( 6) = MTO(CLIT )%TO_ATM
412+
BT( 2) = MTO(FROOT)%TO_ATM
413+
BT( 8) = MTO(FROOT)%TO_STR
414414

415+
BT(11) = AB * CPLANT_g (LEAF)
416+
BT(12) = AB * CPLANT_g (FROOT)
417+
BT(13) = AB * AGL_g(METB)
418+
BT(14) = AB * AGL_g(STR )
415419

416420
!CLN PRINT*,'BT( 1) = MTO(LEAF )%TO_ATM ',MTO(LEAF)%TO_ATM
417421
!CLN PRINT*,'BT( 2) = MTO(WOOD )%TO_ATM ',MTO(WOOD)%TO_ATM
@@ -814,24 +818,22 @@ SUBROUTINE RUN_BLAZE(BLAZE, SF, CPLANT_g, CPLANT_w, tstp, YYYY, doy, TO , climat
814818
STOP -1
815819
ENDIF
816820

821+
!CALL PRINT_BLAZE(BLAZE)
822+
817823
! Apply half of former deadwood to atm now How to distribut (str
818824
! set following Fraver 2013 pinus rosinosa (hardwood/decid. wood to be added
819825

820826
DO np = 1, BLAZE%NCELLS
821827

822-
823-
824828
CALL COMBUST( BLAZE, np, CPLANT_g(np,:), CPLANT_w(np,:),TO(np,:),BLAZE%AB(np).GT.0 )
825829

826-
827-
828830
BLAZE%DFLI(np) = BLAZE%FLI(np)
829831
BLAZE%TO(np,:) = 0.
830832

831833
IF (BLAZE%AB(np) .GT. 0. ) THEN
832834
CALL BLAZE_TURNOVER( BLAZE%AB(np), CPLANT_g(np,:), CPLANT_w(np,:), &
833-
AGL_g(np,:), AGL_w(np,:),BGL_g(np,:), BGL_w(np,:), &
834-
BLAZE%shootfrac(np), TO(np,:), BLAZE%FLUXES(np,:), BLAZE%BURNMODE )
835+
BLAZE%AGLit_g(np,:), BLAZE%AGLit_w(np,:),BLAZE%BGLit_g(np,:), BLAZE%BGLit_w(np,:), &
836+
BLAZE%shootfrac(np), TO(np,:), BLAZE%FLUXES(np,:), BLAZE%BURNMODE)
835837
ENDIF
836838

837839

@@ -866,7 +868,7 @@ SUBROUTINE WRITE_BLAZE_OUTPUT_NC ( BLAZE, FINAL )
866868
!INTEGER, INTENT(IN) :: ctime
867869

868870
INTEGER :: STATUS
869-
INTEGER :: land_ID, t_ID
871+
INTEGER :: land_ID, t_ID, f_ID
870872
INTEGER :: i, mp
871873
CHARACTER :: FNAME*99,dum*50
872874
LOGICAL, SAVE :: CALL1 = .TRUE.
@@ -877,8 +879,10 @@ SUBROUTINE WRITE_BLAZE_OUTPUT_NC ( BLAZE, FINAL )
877879
CHARACTER(len=20),DIMENSION(25):: A1
878880
! 2 dim integer arrays (mp,t)
879881
CHARACTER(len=20),DIMENSION(1):: AI1
882+
! 3 dim real arrays (mp,t,nfluxes)
883+
CHARACTER(len=20),DIMENSION(1):: A2
880884

881-
INTEGER, SAVE :: VIDtime, VID0(SIZE(A0)),VID1(SIZE(A1)),VIDI1(SIZE(AI1))
885+
INTEGER, SAVE :: VIDtime, VID0(SIZE(A0)),VID1(SIZE(A1)),VIDI1(SIZE(AI1)),VID2(SIZE(A2))
882886
INTEGER, SAVE :: FILE_ID, CNT = 0
883887

884888
A0(1) = 'latitude'
@@ -913,6 +917,8 @@ SUBROUTINE WRITE_BLAZE_OUTPUT_NC ( BLAZE, FINAL )
913917

914918
AI1(1) = 'DaysSinceLastRain'
915919

920+
A2(1) = 'BLAZE_fluxes'
921+
916922
CNT = CNT + 1
917923

918924
mp = BLAZE%ncells
@@ -949,6 +955,9 @@ SUBROUTINE WRITE_BLAZE_OUTPUT_NC ( BLAZE, FINAL )
949955
IF (STATUS /= NF90_noerr) CALL handle_err(STATUS)
950956

951957
STATUS = NF90_def_dim(FILE_ID, 'time' , NF90_UNLIMITED, t_ID)
958+
IF (STATUS /= NF90_noerr) CALL handle_err(STATUS)
959+
960+
STATUS = NF90_def_dim(FILE_ID, 'fluxes' , NFLUXES, f_ID)
952961
IF (STATUS /= NF90_noerr) CALL handle_err(STATUS)
953962

954963
! Define variables
@@ -982,6 +991,12 @@ SUBROUTINE WRITE_BLAZE_OUTPUT_NC ( BLAZE, FINAL )
982991
write(*,*) 'def AI1'
983992
END DO
984993

994+
DO i = 1, SIZE(A2)
995+
STATUS = NF90_def_var(FILE_ID,TRIM(A2(i)) ,NF90_FLOAT,(/land_ID,f_ID ,t_ID/),VID2(i))
996+
IF (STATUS /= NF90_noerr) CALL handle_err(STATUS)
997+
write(*,*) 'def A2'
998+
END DO
999+
9851000
! End define mode:
9861001
STATUS = NF90_enddef(FILE_ID)
9871002
IF (STATUS /= NF90_noerr) CALL handle_err(STATUS)
@@ -1092,6 +1107,12 @@ SUBROUTINE WRITE_BLAZE_OUTPUT_NC ( BLAZE, FINAL )
10921107
STATUS = NF90_PUT_VAR(FILE_ID, VIDI1(1), BLAZE%DSLR, start=(/ 1, CNT /), count=(/ mp, 1 /) )
10931108
IF(STATUS /= NF90_NoErr) CALL handle_err(STATUS)
10941109

1110+
! Float 3D
1111+
DO i=1,NFLUXES
1112+
STATUS = NF90_PUT_VAR(FILE_ID, VID2(1),BLAZE%FLUXES(:,i), start=(/ 1, i, CNT /), count=(/ mp, 1, 1 /))
1113+
IF(STATUS /= NF90_NoErr) CALL handle_err(STATUS)
1114+
END DO
1115+
10951116
IF(STATUS /= NF90_NoErr) CALL handle_err(STATUS)
10961117

10971118
IF ( FINAL ) THEN

0 commit comments

Comments
 (0)