@@ -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
2324END  TYPE  TYPE_BLAZE 
2425
2526TYPE  TYPE_TURNOVER 
@@ -29,6 +30,7 @@ MODULE BLAZE_MOD
2930REAL , DIMENSION (:,:), ALLOCATABLE   ::  BLAZEFLX !  To BLAZE!!!
3031
3132INTEGER , PARAMETER  ::  NTO     =  7  !  Number of TurnOver Parameters ,i.e. #lines below
33+ INTEGER , PARAMETER  ::  NFLUXES =  14 !  Number of FLUXES in BLAZE output
3234INTEGER , PARAMETER  ::  LEAF    =  1 
3335INTEGER , PARAMETER  ::  WOOD    =  2 
3436INTEGER , 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' 
958+        IF  (STATUS /=  NF90_noerr) CALL  handle_err(STATUS)
959+ 
960+        STATUS =  NF90_def_dim(FILE_ID, ' fluxes' 
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