Changeset 4901 for palm/trunk
- Timestamp:
- Mar 4, 2021 9:24:08 PM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/chemistry_model_mod.f90
r4899 r4901 26 26 ! ----------------- 27 27 ! $Id$ 28 ! removed unnecessary informative messages, 29 ! removed unused code in chem_depo subroutine 30 ! 31 ! 4899 2021-03-04 16:42:21Z raasch 28 32 ! small adjustments regarding r4897 29 33 ! … … 1863 1867 ! 1864 1868 !-- At the moment the evaluation is done with both emiss_lod and mode_emis but once salsa has been 1865 !-- migrated to emiss_lod the .OR. mode_emis conditions can be removed (ecc 20190513)1869 !-- migrated to emiss_lod the .OR. mode_emis conditions can be removed 1866 1870 IF ( ( emiss_lod == 1 ) .OR. ( mode_emis == 'DEFAULT' ) ) THEN 1867 1871 WRITE ( io, 5 ) … … 2535 2539 side_street_id, & 2536 2540 photolysis_scheme, & 2537 wall_csflux, & 2541 wall_csflux, & 2538 2542 surface_csflux, & 2539 2543 surface_csflux_name, & … … 2652 2656 !-- force emission_read_legacy_mode to TRUE (not yet implemented) 2653 2657 2654 IF ( emiss_read_legacy_mode ) THEN !< notify legacy read mode 2655 2656 message_string = 'Legacy emission read mode activated&' // & 2657 'All emissions data will be loaded ' // & 2658 'prior to start of simulation' 2659 CALL message( 'chem_parin', 'PA0735', 0, 0, 0, 6, 0 ) 2660 2661 ELSE !< if new read mode selected 2658 IF ( .NOT. emiss_read_legacy_mode ) THEN !< if new read mode selected 2662 2659 2663 2660 IF ( emiss_lod < 2 ) THEN !< check LOD compatibility … … 5130 5127 !-- Total canopy conductance (gc_tot) and resistance Rc (rc_tot): 5131 5128 CALL rc_rctot( gstom, gsoil_eff, gw, gc_tot, rc_tot ) 5132 ! 5133 !-- Needed to include compensation point for NH3 5134 !-- Compensation points (always returns ccomp_tot; currently ccomp_tot != 0 only for NH3): 5135 !-- CALL rc_comp_point( compnam,lu,day_of_year,t,gw,gstom,gsoil_eff,gc_tot,& 5136 !-- lai_present, sai_present, & 5137 !-- ccomp_tot, & 5138 !-- conc_ijk_ugm3=conc_ijk_ugm3,c_ave_prev_nh3=c_ave_prev_nh3, & 5139 !-- c_ave_prev_so2=c_ave_prev_so2,gamma_soil_water=gamma_soil_water, & 5140 !-- tsea=tsea,cw=cw,cstom=cstom,csoil=csoil ) 5141 ! 5142 !-- Effective Rc based on compensation points: 5143 !-- IF ( PRESENT( rc_eff ) ) THEN 5144 !-- check on required arguments: 5145 !-- IF ( ( .NOT. PRESENT( conc_ijk_ugm3 ) ) .OR. ( .NOT. PRESENT( ra ) ) .OR. & 5146 !-- ( .NOT. PRESENT( rb ) ) ) THEN 5147 !-- STOP 'output argument rc_eff requires input arguments conc_ijk_ugm3, ra and rb' 5148 !-- ENDIF 5149 ! 5150 !-- Compute rc_eff : 5151 !-- CALL rc_comp_point_rc_eff(ccomp_tot,conc_ijk_ugm3,ra,rb,rc_tot,rc_eff) 5152 !-- ENDIF 5129 5153 5130 ENDIF 5154 5131 … … 5929 5906 5930 5907 !--------------------------------------------------------------------------------------------------! 5931 !> rc_comp_point_rc_eff: calculate the effective resistance Rc5932 !> based on one or more compensation points5933 !--------------------------------------------------------------------------------------------------!5934 !> NH3rc (see depac v3.6 is based on Avero workshop Marc Sutton. p. 173. Sutton 1998 AE 473-480)5935 !>5936 !> Documentation by Ferd Sauter, 2008; see also documentation block in header of depac subroutine.5937 !> FS 2009-01-29: variable names made consistent with DEPAC5938 !> FS 2009-03-04: use total compensation point5939 !>5940 !> C: with total compensation point ! D: approximation of C5941 !> ! with classical approach5942 !> zr --------- Catm ! zr --------- Catm5943 !> | ! |5944 !> Ra ! Ra5945 !> | ! |5946 !> Rb ! Rb5947 !> | ! |5948 !> z0 --------- Cc ! z0 --------- Cc5949 !> | ! |5950 !> Rc ! Rc_eff5951 !> | ! |5952 !> --------- Ccomp_tot ! --------- C=05953 !>5954 !>5955 !> The effective Rc is defined such that instead of using5956 !>5957 !> F = -vd*[Catm - Ccomp_tot] (1)5958 !>5959 !> we can use the 'normal' flux formula5960 !>5961 !> F = -vd'*Catm, (2)5962 !>5963 !> with vd' = 1/(Ra + Rb + Rc') (3)5964 !>5965 !> and Rc' the effective Rc (rc_eff).5966 !> (Catm - Ccomp_tot)5967 !> vd'*Catm = vd*(Catm - Ccomp_tot) <=> vd' = vd* ------------------5968 !> Catm5969 !>5970 !> (Catm - Ccomp_tot)5971 !> 1/(Ra + Rb + Rc') = (1/Ra + Rb + Rc) * ------------------5972 !> Catm5973 !>5974 !> Catm5975 !> (Ra + Rb + Rc') = (Ra + Rb + Rc) * ------------------5976 !> (Catm - Ccomp_tot)5977 !>5978 !> Catm5979 !> Rc' = (Ra + Rb + Rc) * ------------------ - Ra - Rb5980 !> (Catm - Ccomp_tot)5981 !>5982 !> Catm Catm5983 !> Rc' = (Ra + Rb) [------------------ - 1 ] + Rc * ------------------5984 !> (Catm - Ccomp_tot) (Catm - Ccomp_tot)5985 !>5986 !> Rc' = [(Ra + Rb)*Ccomp_tot + Rc*Catm ] / (Catm - Ccomp_tot)5987 !>5988 ! -------------------------------------------------------------------------------------------5989 ! SUBROUTINE rc_comp_point_rc_eff( ccomp_tot, conc_ijk_ugm3, ra, rb, rc_tot, rc_eff )5990 !5991 !5992 !!-- Input/output variables:5993 ! REAL(wp), INTENT(IN) :: ccomp_tot !< total compensation point (weighed average of separate compensation points) (ug/m3)5994 ! REAL(wp), INTENT(IN) :: conc_ijk_ugm3 !< atmospheric concentration (ug/m3) above Catm5995 ! REAL(wp), INTENT(IN) :: ra !< aerodynamic resistance (s/m)5996 ! REAL(wp), INTENT(IN) :: rb !< boundary layer resistance (s/m)5997 ! REAL(wp), INTENT(IN) :: rc_tot !< total canopy resistance (s/m)5998 !5999 ! REAL(wp), INTENT(OUT) :: rc_eff !< effective total canopy resistance (s/m)6000 !6001 ! !6002 !!-- Compute effective resistance:6003 ! IF ( ccomp_tot == 0.0_wp ) THEN6004 ! !6005 !!-- Trace with no compensiation point ( or compensation point equal to zero)6006 ! rc_eff = rc_tot6007 !6008 ! ELSE IF ( ccomp_tot > 0.0_wp .AND. ( abs( conc_ijk_ugm3 - ccomp_tot ) < 1.e-8 ) ) THEN6009 ! !6010 !!-- Surface concentration (almost) equal to atmospheric concentration6011 !!-- no exchange between surface and atmosphere, infinite RC --> vd=06012 ! rc_eff = 9999999999.0_wp6013 !6014 ! ELSE IF ( ccomp_tot > 0.0_wp ) THEN6015 ! !6016 !!-- Compensation point available, calculate effective resistance6017 ! rc_eff = ( ( ra + rb ) * ccomp_tot + rc_tot * conc_ijk_ugm3 ) / ( conc_ijk_ugm3 - ccomp_tot )6018 !6019 ! ELSE6020 ! rc_eff = -999.0_wp6021 ! message_string = 'This should not be possible, check ccomp_tot'6022 ! CALL message( 'rc_comp_point_rc_eff', 'PA....', 1, 2, 0, 6, 0 )6023 ! ENDIF6024 !6025 ! RETURN6026 !6027 ! END SUBROUTINE rc_comp_point_rc_eff6028 6029 6030 !--------------------------------------------------------------------------------------------------!6031 5908 !> missing: check for data that correspond with a missing deposition path this data is represented 6032 5909 !> by -999
Note: See TracChangeset
for help on using the changeset viewer.