diff --git a/src/multiom/ifs2mars/ifs2mars/ifs2mars_mod.F90 b/src/multiom/ifs2mars/ifs2mars/ifs2mars_mod.F90 index cf7e692f1..9ce3ec2dd 100644 --- a/src/multiom/ifs2mars/ifs2mars/ifs2mars_mod.F90 +++ b/src/multiom/ifs2mars/ifs2mars/ifs2mars_mod.F90 @@ -1412,21 +1412,21 @@ PP_THREAD_SAFE FUNCTION ATM2MARS_SET_SATELLITE( IFS_MSG, IFS_PAR, MSG, PAR, HOOK ! TODO: this check is very naive, it should be replaced with a more complex one PP_TRYCALL(ERRFLAG_IS_SATELLITE) ATM2MARS_IS_SATELLITE( IFS_MSG, IFS_PAR, IS_SATELLITE, HOOKS ) - ! Error handling - PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%MSATID), ERRFLAG_NOT_ALLOCATED ) - PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%MINST), ERRFLAG_NOT_ALLOCATED ) - PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%MCHAN), ERRFLAG_NOT_ALLOCATED ) - PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%MSERIES), ERRFLAG_NOT_ALLOCATED ) - PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%RCWN), ERRFLAG_NOT_ALLOCATED ) - - PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%MSATID).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS1 ) - PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%MINST).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS2 ) - PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%MCHAN).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS3 ) - PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%MSERIES).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS4 ) - PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%RCWN).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS5 ) - ! If it is analysis configure mars and context IF ( IS_SATELLITE ) THEN + ! Error handling + PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%MSATID), ERRFLAG_NOT_ALLOCATED ) + PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%MINST), ERRFLAG_NOT_ALLOCATED ) + PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%MCHAN), ERRFLAG_NOT_ALLOCATED ) + PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%MSERIES), ERRFLAG_NOT_ALLOCATED ) + PP_DEBUG_CRITICAL_COND_THROW( .NOT.ALLOCATED(IFS_PAR%SAT_%RCWN), ERRFLAG_NOT_ALLOCATED ) + + PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%MSATID).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS1 ) + PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%MINST).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS2 ) + PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%MCHAN).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS3 ) + PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%MSERIES).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS4 ) + PP_DEBUG_CRITICAL_COND_THROW( SIZE(IFS_PAR%SAT_%RCWN).LT.IFS_MSG%ILEVG_, ERRFLAG_OUT_OF_BOUNDS5 ) + MSG%IDENT = IFS_PAR%SAT_%MSATID(IFS_MSG%ILEVG_) MSG%INSTRUMENT = IFS_PAR%SAT_%MINST(IFS_MSG%ILEVG_) MSG%CHANNEL = IFS_PAR%SAT_%MCHAN(IFS_MSG%ILEVG_) diff --git a/src/multiom/ifs2mars/output-manager/model_data2multio_mod.F90 b/src/multiom/ifs2mars/output-manager/model_data2multio_mod.F90 index 060023a72..cb5566991 100644 --- a/src/multiom/ifs2mars/output-manager/model_data2multio_mod.F90 +++ b/src/multiom/ifs2mars/output-manager/model_data2multio_mod.F90 @@ -1095,6 +1095,7 @@ PP_THREAD_SAFE FUNCTION MODEL_DATA2MULTIO_GET_MARS_FROM_ATM( THIS, YDMSG, MSG, P USE :: IFS2MARS_MOD, ONLY: IFS2MARS_SET_ANALYSIS USE :: IFS2MARS_MOD, ONLY: IFS2MARS_SET_ENSEMBLE USE :: IFS2MARS_MOD, ONLY: IFS2MARS_SET_SYSTEM_METHOD + USE :: IFS2MARS_MOD, ONLY: ATM2MARS_SET_SATELLITE USE :: IFS2MARS_MOD, ONLY: ATM2MARS_SET_PARAM USE :: IFS2MARS_MOD, ONLY: IFS2MARS_SET_DATETIME USE :: IFS2MARS_MOD, ONLY: IFS2MARS_SET_GEOMETRY @@ -1146,6 +1147,7 @@ PP_THREAD_SAFE FUNCTION MODEL_DATA2MULTIO_GET_MARS_FROM_ATM( THIS, YDMSG, MSG, P INTEGER(KIND=JPIB_K), PARAMETER :: ERRFLAG_UNEXPECTED_REPRESENTATION=14_JPIB_K INTEGER(KIND=JPIB_K), PARAMETER :: ERRFLAG_UNABLE_TO_SET_TABLES_VERSION=15_JPIB_K INTEGER(KIND=JPIB_K), PARAMETER :: ERRFLAG_UNABLE_TO_SET_MODEL=16_JPIB_K + INTEGER(KIND=JPIB_K), PARAMETER :: ERRFLAG_UNABLE_TO_SET_SATELLITE=17_JPIB_K ! Local variables declared by the preprocessor for debugging purposes PP_DEBUG_DECL_VARS @@ -1176,6 +1178,7 @@ PP_THREAD_SAFE FUNCTION MODEL_DATA2MULTIO_GET_MARS_FROM_ATM( THIS, YDMSG, MSG, P PP_TRYCALL(ERRFLAG_UNABLE_TO_SET_ANALYSIS) IFS2MARS_SET_ANALYSIS( YDMSG, THIS%MODEL_PAR_, MSG, PAR, HOOKS ) PP_TRYCALL(ERRFLAG_UNABLE_TO_SET_ENSEMBLE) IFS2MARS_SET_ENSEMBLE( YDMSG, THIS%MODEL_PAR_, MSG, PAR, HOOKS ) PP_TRYCALL(ERRFLAG_UNABLE_TO_SET_ENSEMBLE) IFS2MARS_SET_SYSTEM_METHOD( YDMSG, THIS%MODEL_PAR_, MSG, PAR, HOOKS ) + PP_TRYCALL(ERRFLAG_UNABLE_TO_SET_SATELLITE) ATM2MARS_SET_SATELLITE( YDMSG, THIS%MODEL_PAR_, MSG, PAR, HOOKS ) PP_TRYCALL(ERRFLAG_UNABLE_TO_SET_PARAM) ATM2MARS_SET_PARAM ( YDMSG, THIS%MODEL_PAR_, MSG, PAR, HOOKS ) PP_TRYCALL(ERRFLAG_UNABLE_TO_SET_DATETIME) IFS2MARS_SET_DATETIME( YDMSG, THIS%MODEL_PAR_, MSG, PAR, HOOKS, IS_VALID ) PP_TRYCALL(ERRFLAG_UNABLE_TO_SET_TABLES_VERSION) IFS2MARS_SET_TABLES_VERSION( YDMSG, THIS%MODEL_PAR_, MSG, PAR, HOOKS ) @@ -1250,6 +1253,8 @@ PP_THREAD_SAFE FUNCTION MODEL_DATA2MULTIO_GET_MARS_FROM_ATM( THIS, YDMSG, MSG, P PP_DEBUG_PUSH_MSG_TO_FRAME( 'Unable to set the tables version' ) CASE (ERRFLAG_UNABLE_TO_SET_MODEL) PP_DEBUG_PUSH_MSG_TO_FRAME( 'Unable to set the model' ) + CASE (ERRFLAG_UNABLE_TO_SET_SATELLITE) + PP_DEBUG_PUSH_MSG_TO_FRAME( 'Unable to set satellite keys (channel, ident, instrument)' ) CASE DEFAULT PP_DEBUG_PUSH_MSG_TO_FRAME( 'Unhandled error' ) END SELECT @@ -2474,7 +2479,7 @@ PP_THREAD_SAFE FUNCTION MODEL_DATA2MULTIO_WRITE_WAM_DP( THIS, YDMSG, VALUES_DP, ERR = MIOMD%DELETE() PP_DEBUG_DEVELOP_COND_THROW( ERR.NE.MULTIO_SUCCESS, ERRFLAG_UNABLE_TO_DELETE_MIOMD ) - + ENDIF !> Free the message/parametrization