Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real, | intent(in) | :: | nox_bg | |||
real, | intent(in) | :: | no2_bg | |||
real, | intent(in) | :: | nox_loc | |||
real, | intent(in) | :: | o3_bg | |||
real, | intent(in) | :: | f_no2_loc | |||
real, | intent(out) | :: | nox_out | |||
real, | intent(out) | :: | no2_out | |||
real, | intent(out) | :: | o3_out | |||
real, | intent(in) | :: | SRM_params(3) |
subroutine uEMEP_SRM_NO2(nox_bg, no2_bg, nox_loc, o3_bg, f_no2_loc, nox_out, no2_out, o3_out, SRM_params) ! From model fit ! real :: beta = 0.45 ! real :: K = 30.0 ! real :: F = 0.2 ! From RIVM Briefrapport 2014-0109 ! beta=1 ! K=100 ! F=0.2 ! ! Reference ! https://core.ac.uk/download/pdf/58774365.pdf real, intent(in) :: nox_bg, no2_bg, nox_loc, o3_bg, f_no2_loc real, intent(in) :: SRM_params(3) real, intent(out) :: nox_out, no2_out, o3_out ! Local variables real :: beta = 0.45 real :: K = 30.0 real :: F = 0.2 real :: ox_init, no2_init ! If available, use custom parameter values if (abs(SRM_params(1)) > epsilon0) then beta = SRM_params(1) K = SRM_params(2) F = SRM_params(3) end if nox_out = nox_bg + nox_loc no2_out = no2_bg + beta*o3_bg*nox_loc/(nox_loc + K/(1 - F)) + F*nox_loc no2_init = no2_bg + f_no2_loc*nox_loc ! Small adjustments for molecular weights ox_init = no2_init*47.0/46.0 + o3_bg*47.0/48.0 o3_out = ox_init*48.0/47.0 - no2_out*48.0/46.0 end subroutine uEMEP_SRM_NO2