From 602a4fc91015a7ba9b420cf8e90918ec31078444 Mon Sep 17 00:00:00 2001
From: Quentin Rodier <quentin.rodier@meteo.fr>
Date: Thu, 7 Jul 2022 16:54:02 +0200
Subject: [PATCH] Quentin 07/07/2022: Packing Budget

---
 src/arome/aux/mode_budget.F90  | 30 ++++++++++++++++++++++++--
 src/mesonh/aux/mode_budget.f90 | 39 +++++++++++++++++++++++++++++++---
 2 files changed, 64 insertions(+), 5 deletions(-)

diff --git a/src/arome/aux/mode_budget.F90 b/src/arome/aux/mode_budget.F90
index bd59b9e97..afd54a187 100644
--- a/src/arome/aux/mode_budget.F90
+++ b/src/arome/aux/mode_budget.F90
@@ -9,14 +9,40 @@ SUBROUTINE BUDGET_STORE_INIT(TPBUDGET, HSOURCE, PVARS)
   CHARACTER(LEN=*),       INTENT(IN)    :: HSOURCE  ! Name of the source term
   REAL, DIMENSION(:,:,:), INTENT(IN)    :: PVARS    ! Current value to be stored
 END SUBROUTINE BUDGET_STORE_INIT
-
+!
+SUBROUTINE BUDGET_STORE_INIT_PHY(D,TPBUDGET, HSOURCE, PVARS)
+  USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
+  TYPE(DIMPHYEX_t),       INTENT(IN)    :: D
+  TYPE(TBUDGETDATA),      INTENT(INOUT) :: TPBUDGET ! Budget datastructure
+  CHARACTER(LEN=*),       INTENT(IN)    :: HSOURCE  ! Name of the source term
+  REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    :: PVARS    ! Current value to be stored
+END SUBROUTINE BUDGET_STORE_INIT_PHY
+!
 SUBROUTINE BUDGET_STORE_END(TPBUDGET, HSOURCE, PVARS)
   TYPE(TBUDGETDATA),      INTENT(INOUT) :: TPBUDGET ! Budget datastructure
   CHARACTER(LEN=*),       INTENT(IN)    :: HSOURCE  ! Name of the source term
   REAL, DIMENSION(:,:,:), INTENT(IN)    :: PVARS    ! Current value to be stored
   CALL BUDGET_DDH(PVARS, TPBUDGET%NBUDGET, HSOURCE, TPBUDGET%YDDDH, TPBUDGET%YDLDDH, TPBUDGET%YDMDDH)
 END SUBROUTINE BUDGET_STORE_END
-
+!
+SUBROUTINE BUDGET_STORE_END_PHY(D,TPBUDGET, HSOURCE, PVARS)
+  USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
+  TYPE(DIMPHYEX_t),       INTENT(IN)    :: D
+  TYPE(TBUDGETDATA),      INTENT(INOUT) :: TPBUDGET ! Budget datastructure
+  CHARACTER(LEN=*),       INTENT(IN)    :: HSOURCE  ! Name of the source term
+  REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    :: PVARS    ! Current value to be stored
+  CALL BUDGET_STORE_END(TPBUDGET, HSOURCE, PVARS)
+END SUBROUTINE BUDGET_STORE_END_PHY
+!
+SUBROUTINE BUDGET_STORE_ADD_PHY(D,TPBUDGET, HSOURCE, PVARS)
+  USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
+  TYPE(DIMPHYEX_t),       INTENT(IN)    :: D
+  TYPE(TBUDGETDATA),      INTENT(INOUT) :: TPBUDGET ! Budget datastructure
+  CHARACTER(LEN=*),       INTENT(IN)    :: HSOURCE  ! Name of the source term
+  REAL, DIMENSION(D%NIT,D%NJT,D%NKT), INTENT(IN)    :: PVARS    ! Current value to be stored
+  CALL BUDGET_STORE_ADD(TPBUDGET, HSOURCE, PVARS)
+END SUBROUTINE BUDGET_STORE_ADD_PHY
+!
 SUBROUTINE BUDGET_STORE_ADD(TPBUDGET, HSOURCE, PVARS)
 #ifdef REPRO48
 USE DDH_MIX, ONLY:NFLEVGDDH
diff --git a/src/mesonh/aux/mode_budget.f90 b/src/mesonh/aux/mode_budget.f90
index 13c746c43..89aad3a6e 100644
--- a/src/mesonh/aux/mode_budget.f90
+++ b/src/mesonh/aux/mode_budget.f90
@@ -26,14 +26,47 @@ implicit none
 
 private
 
-public :: Budget_store_init
-public :: Budget_store_end
-public :: Budget_store_add
+public :: Budget_store_init,Budget_store_init_phy
+public :: Budget_store_end, Budget_store_end_phy
+public :: Budget_store_add, Budget_store_add_phy
 
 real :: ztime1, ztime2
 
 contains
 
+subroutine Budget_store_init_phy(D, tpbudget, hsource, pvars)
+  USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
+  TYPE(DIMPHYEX_t),       INTENT(IN)    :: D
+  type(tbudgetdata),      intent(inout) :: tpbudget ! Budget datastructure
+  character(len=*),       intent(in)    :: hsource  ! Name of the source term
+  real, dimension(D%NIT,D%NJT,D%NKT), intent(in)    :: pvars    ! Current value to be stored
+!
+  call Budget_store_init(tpbudget, hsource, pvars)
+!
+end subroutine Budget_store_init_phy
+!
+subroutine Budget_store_end_phy(D, tpbudget, hsource, pvars)
+  USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
+  TYPE(DIMPHYEX_t),       INTENT(IN)    :: D
+  type(tbudgetdata),      intent(inout) :: tpbudget ! Budget datastructure
+  character(len=*),       intent(in)    :: hsource  ! Name of the source term
+  real, dimension(D%NIT,D%NJT,D%NKT), intent(in)    :: pvars    ! Current value to be stored
+!
+  call Budget_store_end(tpbudget, hsource, pvars)
+!
+end subroutine Budget_store_end_phy
+!
+subroutine Budget_store_add_phy(D, tpbudget, hsource, pvars)
+  USE MODD_DIMPHYEX, ONLY: DIMPHYEX_t
+  TYPE(DIMPHYEX_t),       INTENT(IN)    :: D
+  type(tbudgetdata),      intent(inout) :: tpbudget ! Budget datastructure
+  character(len=*),       intent(in)    :: hsource  ! Name of the source term
+  real, dimension(D%NIT,D%NJT,D%NKT), intent(in)    :: pvars    ! Current value to be stored
+!
+  call Budget_store_add(tpbudget, hsource, pvars)
+!
+end subroutine Budget_store_add_phy
+!
 subroutine Budget_store_init( tpbudget, hsource, pvars )
   use modd_les, only: lles_call
 
-- 
GitLab