From e2ec9990ac071e2ece196f8a405d1923d2a8e0b4 Mon Sep 17 00:00:00 2001 From: Balwinder Singh Date: Wed, 12 Nov 2025 07:51:24 -0800 Subject: [PATCH 1/4] EAM: Fixes error messages in modal_aer_opt.F90 --- .../eam/src/physics/cam/modal_aer_opt.F90 | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/components/eam/src/physics/cam/modal_aer_opt.F90 b/components/eam/src/physics/cam/modal_aer_opt.F90 index a15713275141..043fd659f677 100644 --- a/components/eam/src/physics/cam/modal_aer_opt.F90 +++ b/components/eam/src/physics/cam/modal_aer_opt.F90 @@ -623,6 +623,7 @@ subroutine modal_aero_sw(list_idx, dt, state, pbuf, nnite, idxnite, is_cmip6_vol ! stratosphere output integer :: ihuge ! a huge integer real(r8) :: saodvis(pcols) ! stratosphere extinction optical depth + character(len=256) :: error_str !---------------------------------------------------------------------------- lchnk = state%lchnk @@ -1141,7 +1142,8 @@ subroutine modal_aero_sw(list_idx, dt, state, pbuf, nnite, idxnite, is_cmip6_vol do i = 1, ncol - if ((dopaer(i) <= -1.e-10_r8) .or. (dopaer(i) >= 30._r8)) then + !if ((dopaer(i) <= -1.e-10_r8) .or. (dopaer(i) >= 30._r8)) then + if(.true.) then if (dopaer(i) <= -1.e-10_r8) then write(iulog,*) "ERROR: Negative aerosol optical depth & @@ -1170,10 +1172,11 @@ subroutine modal_aero_sw(list_idx, dt, state, pbuf, nnite, idxnite, is_cmip6_vol end do nerr_dopaer = nerr_dopaer + 1 -! if (nerr_dopaer >= nerrmax_dopaer) then - if (dopaer(i) < -1.e-10_r8) then - write(iulog,*) '*** halting in '//subname//' after nerr_dopaer =', nerr_dopaer - call endrun('exit from '//subname) + !if (dopaer(i) < -1.e-10_r8) then + if(.true.) then + write(error_str, *) 'ERROR: dopaer(', i, ')=', dopaer(i) ,' which is < -1.e-10_r8 (negative aerosol optical depth) in ',& + trim(subname),' [',trim(errmsg(__FILE__, __LINE__)),']' + call endrun(trim(error_str)) end if end if @@ -1423,6 +1426,7 @@ subroutine modal_aero_lw(list_idx, dt, state, pbuf, tauxar, clear_rh) real(r8) :: volf ! volume fraction of insoluble aerosol character(len=*), parameter :: subname = 'modal_aero_lw' + character(len=256) :: error_str !---------------------------------------------------------------------------- lchnk = state%lchnk @@ -1578,8 +1582,12 @@ subroutine modal_aero_lw(list_idx, dt, state, pbuf, tauxar, clear_rh) nerr_dopaer = nerr_dopaer + 1 if (nerr_dopaer >= nerrmax_dopaer .or. dopaer(i) < -1.e-10_r8) then - write(iulog,*) '*** halting in '//subname//' after nerr_dopaer =', nerr_dopaer - call endrun() + write(error_str,*) & + 'Maximum number of aerosol optical depth errors exceeded (nerrmax_dopaer = ', & + nerrmax_dopaer, ') - OR - dopaer(', i, ') = ', dopaer(i), ' which is < -1.e-10_r8 in ', & + trim(subname), ' [', trim(errmsg(__FILE__, __LINE__)),']' + + call endrun(trim(error_str)) end if end if From 97df40f3591b400cb37b692feb64e7258be451fc Mon Sep 17 00:00:00 2001 From: singhbalwinder Date: Wed, 12 Nov 2025 07:55:36 -0800 Subject: [PATCH 2/4] Fixed debugging conditionals --- components/eam/src/physics/cam/modal_aer_opt.F90 | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/components/eam/src/physics/cam/modal_aer_opt.F90 b/components/eam/src/physics/cam/modal_aer_opt.F90 index 043fd659f677..2061e5432a70 100644 --- a/components/eam/src/physics/cam/modal_aer_opt.F90 +++ b/components/eam/src/physics/cam/modal_aer_opt.F90 @@ -1142,8 +1142,7 @@ subroutine modal_aero_sw(list_idx, dt, state, pbuf, nnite, idxnite, is_cmip6_vol do i = 1, ncol - !if ((dopaer(i) <= -1.e-10_r8) .or. (dopaer(i) >= 30._r8)) then - if(.true.) then + if ((dopaer(i) <= -1.e-10_r8) .or. (dopaer(i) >= 30._r8)) then if (dopaer(i) <= -1.e-10_r8) then write(iulog,*) "ERROR: Negative aerosol optical depth & @@ -1172,8 +1171,7 @@ subroutine modal_aero_sw(list_idx, dt, state, pbuf, nnite, idxnite, is_cmip6_vol end do nerr_dopaer = nerr_dopaer + 1 - !if (dopaer(i) < -1.e-10_r8) then - if(.true.) then + if (dopaer(i) < -1.e-10_r8) then write(error_str, *) 'ERROR: dopaer(', i, ')=', dopaer(i) ,' which is < -1.e-10_r8 (negative aerosol optical depth) in ',& trim(subname),' [',trim(errmsg(__FILE__, __LINE__)),']' call endrun(trim(error_str)) From c98ac4cea51d9f6224f45d81c91b9f1383b8eb33 Mon Sep 17 00:00:00 2001 From: singhbalwinder Date: Wed, 12 Nov 2025 07:56:44 -0800 Subject: [PATCH 3/4] Removes "Error" as it is automatically added by endrun --- components/eam/src/physics/cam/modal_aer_opt.F90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/eam/src/physics/cam/modal_aer_opt.F90 b/components/eam/src/physics/cam/modal_aer_opt.F90 index 2061e5432a70..9f9f1ccc1f82 100644 --- a/components/eam/src/physics/cam/modal_aer_opt.F90 +++ b/components/eam/src/physics/cam/modal_aer_opt.F90 @@ -1172,7 +1172,7 @@ subroutine modal_aero_sw(list_idx, dt, state, pbuf, nnite, idxnite, is_cmip6_vol nerr_dopaer = nerr_dopaer + 1 if (dopaer(i) < -1.e-10_r8) then - write(error_str, *) 'ERROR: dopaer(', i, ')=', dopaer(i) ,' which is < -1.e-10_r8 (negative aerosol optical depth) in ',& + write(error_str, *) 'dopaer(', i, ')=', dopaer(i) ,' which is < -1.e-10_r8 (negative aerosol optical depth) in ',& trim(subname),' [',trim(errmsg(__FILE__, __LINE__)),']' call endrun(trim(error_str)) end if From f7804e91c9a2c967e23effabf369bff6b10ab911 Mon Sep 17 00:00:00 2001 From: singhbalwinder Date: Wed, 12 Nov 2025 12:04:39 -0800 Subject: [PATCH 4/4] Adds ERROR string back to the error messages --- components/eam/src/physics/cam/modal_aer_opt.F90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/eam/src/physics/cam/modal_aer_opt.F90 b/components/eam/src/physics/cam/modal_aer_opt.F90 index 9f9f1ccc1f82..d2e347f79bf0 100644 --- a/components/eam/src/physics/cam/modal_aer_opt.F90 +++ b/components/eam/src/physics/cam/modal_aer_opt.F90 @@ -1172,7 +1172,7 @@ subroutine modal_aero_sw(list_idx, dt, state, pbuf, nnite, idxnite, is_cmip6_vol nerr_dopaer = nerr_dopaer + 1 if (dopaer(i) < -1.e-10_r8) then - write(error_str, *) 'dopaer(', i, ')=', dopaer(i) ,' which is < -1.e-10_r8 (negative aerosol optical depth) in ',& + write(error_str, *) 'ERROR: dopaer(', i, ')=', dopaer(i) ,' which is < -1.e-10_r8 (negative aerosol optical depth) in ',& trim(subname),' [',trim(errmsg(__FILE__, __LINE__)),']' call endrun(trim(error_str)) end if @@ -1581,7 +1581,7 @@ subroutine modal_aero_lw(list_idx, dt, state, pbuf, tauxar, clear_rh) nerr_dopaer = nerr_dopaer + 1 if (nerr_dopaer >= nerrmax_dopaer .or. dopaer(i) < -1.e-10_r8) then write(error_str,*) & - 'Maximum number of aerosol optical depth errors exceeded (nerrmax_dopaer = ', & + 'ERROR: Maximum number of aerosol optical depth errors exceeded (nerrmax_dopaer = ', & nerrmax_dopaer, ') - OR - dopaer(', i, ') = ', dopaer(i), ' which is < -1.e-10_r8 in ', & trim(subname), ' [', trim(errmsg(__FILE__, __LINE__)),']'