Skip to content

Commit

Permalink
Check abio_dic_on and base_bio_on before posting
Browse files Browse the repository at this point in the history
There are a few diagnostics that are only defined if base_bio_on=.true. (the
river flux nutrient forcing fields), and one that is only defined if
abio_dic_on=.true. (the d14c forcing); some compilers won't initialize the
diagnostic ids to 0 in the control structure, so we need to either explicitly
initialize all the ids or only call post_data when we know the ids have been
set. This commit does the latter.
  • Loading branch information
mnlevy1981 committed Apr 3, 2024
1 parent ddd5d46 commit 3c8beb7
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 32 deletions.
3 changes: 3 additions & 0 deletions config_src/drivers/solo_driver/MOM_surface_forcing.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1624,6 +1624,7 @@ subroutine MARBL_forcing_from_data_override(fluxes, day, G, US, CS)
nhx_dep, noy_dep, atm_co2_prog, atm_co2_diag, &
afracr, swnet_afracr, ifrac_n, swpen_ifrac_n, &
day, G, US, 0, 0, fluxes, CS%marbl_forcing_CSp)

deallocate ( atm_co2_prog, &
atm_co2_diag, &
atm_fine_dust_flux, &
Expand All @@ -1634,6 +1635,8 @@ subroutine MARBL_forcing_from_data_override(fluxes, day, G, US, CS)
nhx_dep, &
noy_dep)

call callTree_leave("MARBL_forcing_from_data_override")

end subroutine MARBL_forcing_from_data_override


Expand Down
68 changes: 36 additions & 32 deletions src/tracer/MARBL_tracers.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1756,38 +1756,42 @@ subroutine MARBL_tracers_set_forcing(day_start, G, CS)
enddo

! Post Forcing to Diagnostics
if (CS%no3_riv_flux > 0 .and. CS%tracer_inds%no3_ind > 0) &
call post_data(CS%no3_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%no3_ind), CS%diag)
if (CS%po4_riv_flux > 0 .and. CS%tracer_inds%po4_ind > 0) &
call post_data(CS%po4_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%po4_ind), CS%diag)
if (CS%don_riv_flux > 0 .and. CS%tracer_inds%don_ind > 0) &
call post_data(CS%don_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%don_ind), CS%diag)
if (CS%donr_riv_flux > 0 .and. CS%tracer_inds%donr_ind > 0) &
call post_data(CS%donr_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%donr_ind), CS%diag)
if (CS%dop_riv_flux > 0 .and. CS%tracer_inds%dop_ind > 0) &
call post_data(CS%dop_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%dop_ind), CS%diag)
if (CS%dopr_riv_flux > 0 .and. CS%tracer_inds%dopr_ind > 0) &
call post_data(CS%dopr_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%dopr_ind), CS%diag)
if (CS%sio3_riv_flux > 0 .and. CS%tracer_inds%sio3_ind > 0) &
call post_data(CS%sio3_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%sio3_ind), CS%diag)
if (CS%fe_riv_flux > 0 .and. CS%tracer_inds%fe_ind > 0) &
call post_data(CS%fe_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%fe_ind), CS%diag)
if (CS%doc_riv_flux > 0 .and. CS%tracer_inds%doc_ind > 0) &
call post_data(CS%doc_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%doc_ind), CS%diag)
if (CS%docr_riv_flux > 0 .and. CS%tracer_inds%docr_ind > 0) &
call post_data(CS%docr_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%docr_ind), CS%diag)
if (CS%alk_riv_flux > 0 .and. CS%tracer_inds%alk_ind > 0) &
call post_data(CS%alk_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%alk_ind), CS%diag)
if (CS%alk_alt_co2_riv_flux > 0 .and. CS%tracer_inds%alk_alt_co2_ind > 0) &
call post_data(CS%alk_alt_co2_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%alk_alt_co2_ind), &
CS%diag)
if (CS%dic_riv_flux > 0 .and. CS%tracer_inds%dic_ind > 0) &
call post_data(CS%dic_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%dic_ind), CS%diag)
if (CS%dic_alt_co2_riv_flux > 0 .and. CS%tracer_inds%dic_alt_co2_ind > 0) &
call post_data(CS%dic_alt_co2_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%dic_alt_co2_ind), &
CS%diag)
if (CS%d14c_id > 0) &
call post_data(CS%d14c_id, CS%d14c, CS%diag)
if (CS%read_riv_fluxes) then
if (CS%no3_riv_flux > 0 .and. CS%tracer_inds%no3_ind > 0) &
call post_data(CS%no3_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%no3_ind), CS%diag)
if (CS%po4_riv_flux > 0 .and. CS%tracer_inds%po4_ind > 0) &
call post_data(CS%po4_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%po4_ind), CS%diag)
if (CS%don_riv_flux > 0 .and. CS%tracer_inds%don_ind > 0) &
call post_data(CS%don_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%don_ind), CS%diag)
if (CS%donr_riv_flux > 0 .and. CS%tracer_inds%donr_ind > 0) &
call post_data(CS%donr_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%donr_ind), CS%diag)
if (CS%dop_riv_flux > 0 .and. CS%tracer_inds%dop_ind > 0) &
call post_data(CS%dop_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%dop_ind), CS%diag)
if (CS%dopr_riv_flux > 0 .and. CS%tracer_inds%dopr_ind > 0) &
call post_data(CS%dopr_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%dopr_ind), CS%diag)
if (CS%sio3_riv_flux > 0 .and. CS%tracer_inds%sio3_ind > 0) &
call post_data(CS%sio3_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%sio3_ind), CS%diag)
if (CS%fe_riv_flux > 0 .and. CS%tracer_inds%fe_ind > 0) &
call post_data(CS%fe_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%fe_ind), CS%diag)
if (CS%doc_riv_flux > 0 .and. CS%tracer_inds%doc_ind > 0) &
call post_data(CS%doc_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%doc_ind), CS%diag)
if (CS%docr_riv_flux > 0 .and. CS%tracer_inds%docr_ind > 0) &
call post_data(CS%docr_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%docr_ind), CS%diag)
if (CS%alk_riv_flux > 0 .and. CS%tracer_inds%alk_ind > 0) &
call post_data(CS%alk_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%alk_ind), CS%diag)
if (CS%alk_alt_co2_riv_flux > 0 .and. CS%tracer_inds%alk_alt_co2_ind > 0) &
call post_data(CS%alk_alt_co2_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%alk_alt_co2_ind), &
CS%diag)
if (CS%dic_riv_flux > 0 .and. CS%tracer_inds%dic_ind > 0) &
call post_data(CS%dic_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%dic_ind), CS%diag)
if (CS%dic_alt_co2_riv_flux > 0 .and. CS%tracer_inds%dic_alt_co2_ind > 0) &
call post_data(CS%dic_alt_co2_riv_flux, CS%RIV_FLUXES(:,:,CS%tracer_inds%dic_alt_co2_ind), &
CS%diag)
endif
if (CS%abio_dic_on) then
if (CS%d14c_id > 0) &
call post_data(CS%d14c_id, CS%d14c, CS%diag)
endif

end subroutine MARBL_tracers_set_forcing

Expand Down

0 comments on commit 3c8beb7

Please sign in to comment.