Skip to content
Snippets Groups Projects
Commit 6998685f authored by WAUTELET Philippe's avatar WAUTELET Philippe
Browse files

Philippe 25/11/2022: rewrite STATPROF_INSTANT algorithm (does not depends on...

Philippe 25/11/2022: rewrite STATPROF_INSTANT algorithm (does not depends on model timestep anymore => independent of model)
parent 66bc293e
No related branches found
No related tags found
No related merge requests found
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
!----------------------------------------------------------------- !-----------------------------------------------------------------
! Modifications: ! Modifications:
! P. Wautelet 30/09/2022: bugfix: use XUNDEF from SURFEX for surface variables computed by SURFEX ! P. Wautelet 30/09/2022: bugfix: use XUNDEF from SURFEX for surface variables computed by SURFEX
! P. Wautelet 25/11/2022: rewrite STATPROF_INSTANT algorithm (does not depends on model timestep anymore => independent of model)
!----------------------------------------------------------------- !-----------------------------------------------------------------
! ################### ! ###################
MODULE MODE_STATPROF_TOOLS MODULE MODE_STATPROF_TOOLS
...@@ -729,10 +730,9 @@ END FUNCTION STATPROF_INTERP_3D_V ...@@ -729,10 +730,9 @@ END FUNCTION STATPROF_INTERP_3D_V
! ################################################# ! #################################################
SUBROUTINE STATPROF_INSTANT( TPSTATPROF_TIME, KIN ) SUBROUTINE STATPROF_INSTANT( TPSTATPROF_TIME, KIN )
! ################################################# ! #################################################
USE MODD_DYN_n, ONLY: XTSTEP
USE MODD_PARAMETERS, ONLY: XUNDEF
USE MODD_TIME_n, ONLY: TDTCUR USE MODD_TIME_n, ONLY: TDTCUR
USE MODE_DATETIME
USE MODE_MSG USE MODE_MSG
IMPLICIT NONE IMPLICIT NONE
...@@ -740,24 +740,26 @@ SUBROUTINE STATPROF_INSTANT( TPSTATPROF_TIME, KIN ) ...@@ -740,24 +740,26 @@ SUBROUTINE STATPROF_INSTANT( TPSTATPROF_TIME, KIN )
TYPE(TSTATPROFTIME), INTENT(INOUT) :: TPSTATPROF_TIME TYPE(TSTATPROFTIME), INTENT(INOUT) :: TPSTATPROF_TIME
INTEGER, INTENT(OUT) :: KIN ! Current step of storage INTEGER, INTENT(OUT) :: KIN ! Current step of storage
IF ( TPSTATPROF_TIME%XTIME_CUR == XUNDEF ) TPSTATPROF_TIME%XTIME_CUR = TPSTATPROF_TIME%XTSTEP - XTSTEP IF ( TPSTATPROF_TIME%N_CUR == 0 ) THEN
! First store
TPSTATPROF_TIME%XTIME_CUR = TPSTATPROF_TIME%XTIME_CUR + XTSTEP TPSTATPROF_TIME%N_CUR = 1
TPSTATPROF_TIME%TPDATES(1) = TDTCUR
IF ( TPSTATPROF_TIME%XTIME_CUR >= TPSTATPROF_TIME%XTSTEP - 1.E-10 ) THEN KIN = 1
TPSTATPROF_TIME%XTIME_CUR = TPSTATPROF_TIME%XTIME_CUR - TPSTATPROF_TIME%XTSTEP ELSE
TPSTATPROF_TIME%N_CUR = TPSTATPROF_TIME%N_CUR + 1 IF ( TDTCUR - TPSTATPROF_TIME%TPDATES(TPSTATPROF_TIME%N_CUR) >= TPSTATPROF_TIME%XTSTEP - 1.E-6 ) THEN
KIN = TPSTATPROF_TIME%N_CUR TPSTATPROF_TIME%N_CUR = TPSTATPROF_TIME%N_CUR + 1
KIN = TPSTATPROF_TIME%N_CUR
IF ( KIN < 1 .OR. KIN > SIZE( TPSTATPROF_TIME%TPDATES ) ) THEN IF ( KIN < 1 .OR. KIN > SIZE( TPSTATPROF_TIME%TPDATES ) ) THEN
CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'STATPROF_INSTANT', 'problem with step of storage' ) CALL PRINT_MSG( NVERB_ERROR, 'GEN', 'STATPROF_INSTANT', 'problem with step of storage' )
KIN = -2 KIN = -2
ELSE
TPSTATPROF_TIME%TPDATES(KIN) = TDTCUR
END IF
ELSE ELSE
TPSTATPROF_TIME%TPDATES(KIN) = TDTCUR ! Return an invalid step number
KIN = -1
END IF END IF
ELSE
! Return an invalid step number
KIN = -1
END IF END IF
END SUBROUTINE STATPROF_INSTANT END SUBROUTINE STATPROF_INSTANT
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment