From 0fe1949b3b8e1bb0809618260e431b01d16b0c9d Mon Sep 17 00:00:00 2001 From: Raffaele Montuoro Date: Tue, 29 Nov 2022 21:42:11 +0000 Subject: [PATCH] Add configuration diagnostics and improve error handling. --- src/shr/aqm_config_mod.F90 | 69 +++++++++++++++++++++++++++++++++++--- src/shr/aqm_emis_mod.F90 | 10 ++++++ 2 files changed, 74 insertions(+), 5 deletions(-) diff --git a/src/shr/aqm_config_mod.F90 b/src/shr/aqm_config_mod.F90 index b05d6585..01aaeae3 100644 --- a/src/shr/aqm_config_mod.F90 +++ b/src/shr/aqm_config_mod.F90 @@ -531,36 +531,95 @@ subroutine aqm_config_log(config, name, rc) if (config % ctm_aod) then call ESMF_LogWrite(trim(name) // ": config: read: ctm_aod: true", & ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out else call ESMF_LogWrite(trim(name) // ": config: read: ctm_aod: false", & ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out end if if (config % ctm_wb_dust) then call ESMF_LogWrite(trim(name) // ": config: read: ctm_wb_dust: true", & ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out else call ESMF_LogWrite(trim(name) // ": config: read: ctm_wb_dust: false", & ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out end if + call ESMF_LogWrite(trim(name) // ": config: read: ctm_stdout: " & + // config % ctm_stdout, ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out if (config % run_aero) then call ESMF_LogWrite(trim(name) // ": config: read: run_aerosol: true", & ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out else call ESMF_LogWrite(trim(name) // ": config: read: run_aerosol: false", & ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out end if if (config % run_rescld) then call ESMF_LogWrite(trim(name) // ": config: read: run_rescld: true", & ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out else call ESMF_LogWrite(trim(name) // ": config: read: run_rescld: false", & ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out + end if + if (config % mie_optics) then + call ESMF_LogWrite(trim(name) // ": config: read: mie_optics: true", & + ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out + else + call ESMF_LogWrite(trim(name) // ": config: read: mie_optics: false", & + ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out end if - if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & - line=__LINE__, & - file=__FILE__, & - rcToReturn=rc)) & - return ! bail out call ESMF_LogWrite(trim(name) // ": config: read: mp_tracer_map: " & // config % mp_map, ESMF_LOGMSG_INFO, rc=localrc) if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & diff --git a/src/shr/aqm_emis_mod.F90 b/src/shr/aqm_emis_mod.F90 index c9aa72cf..17bc086c 100644 --- a/src/shr/aqm_emis_mod.F90 +++ b/src/shr/aqm_emis_mod.F90 @@ -553,6 +553,16 @@ subroutine aqm_emis_src_init(model, em, rc) file=__FILE__, & rcToReturn=rc)) & return ! bail out + if (em % verbose) then + write(msgString,'(g20.8)') em % scalefactor + call ESMF_LogWrite(trim(em % logprefix)//": "//pName & + //": alpha: "//adjustl(msgString), ESMF_LOGMSG_INFO, rc=localrc) + if (ESMF_LogFoundError(rcToCheck=localrc, msg=ESMF_LOGERR_PASSTHRU, & + line=__LINE__, & + file=__FILE__, & + rcToReturn=rc)) & + return ! bail out + end if case ("gbbepx") call ESMF_ConfigGetAttribute(config, value, & label=trim(em % name)//"_plume_rise:", default="none", rc=localrc)