Changeset 8a65cb0 in flexpart.git for src/readspecies.f90
- Timestamp:
- Mar 2, 2015, 3:11:55 PM (9 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
- Children:
- 1d207bb
- Parents:
- 60403cd
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/readspecies.f90
r43c8684 r8a65cb0 30 30 ! * 31 31 ! 11 July 1996 * 32 ! 32 ! * 33 33 ! Changes: * 34 34 ! N. Kristiansen, 31.01.2013: Including parameters for in-cloud scavenging * … … 45 45 ! weta_in Parameter for determining in-cloud scavenging * 46 46 ! wetb_in Parameter for determining in-cloud scavenging * 47 ! wetc_in Parameter for determining in-cloud scavenging * 48 ! wetd_in Parameter for determining in-cloud scavenging * 49 ! ohreact OH reaction rate * 47 ! ohcconst OH reaction rate constant C * 48 ! ohdconst OH reaction rate constant D * 50 49 ! id_spec SPECIES number as referenced in RELEASE file * 51 50 ! id_pos position where SPECIES data shall be stored * … … 67 66 character(len=16) :: pspecies 68 67 real :: pdecay, pweta, pwetb, preldiff, phenry, pf0, pdensity, pdquer 69 real :: pdsigma, pdryvel, pweightmolar, poh react, pspec_ass, pkao68 real :: pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pspec_ass, pkao 70 69 real :: pweta_in, pwetb_in, pwetc_in, pwetd_in 71 70 integer :: readerror 72 71 73 72 ! declare namelist 74 73 namelist /species_params/ & 75 pspecies, pdecay, pweta, pwetb, &76 pweta_in, pwetb_in, pwetc_in, pwetd_in, &77 preldiff, phenry, pf0, pdensity, pdquer, &78 pdsigma, pdryvel, pweightmolar, pohreact, pspec_ass, pkao74 pspecies, pdecay, pweta, pwetb, & 75 pweta_in, pwetb_in, pwetc_in, pwetd_in, & 76 preldiff, phenry, pf0, pdensity, pdquer, & 77 pdsigma, pdryvel, pweightmolar, pohcconst, pohdconst, pspec_ass, pkao 79 78 80 79 pspecies=" " … … 84 83 pweta_in=-9.9E-09 85 84 pwetb_in=-9.9E-09 86 pwetc_in=-9.9E-0987 pwetd_in=-9.9E-0985 ! pwetc_in=-9.9E-09 86 ! pwetd_in=-9.9E-09 88 87 preldiff=-9.9 89 88 phenry=0.0 … … 93 92 pdsigma=0.0 94 93 pdryvel=-9.99 95 pohreact=-9.9E-09 94 pohcconst=-9.99 95 pohdconst=-9.9E-09 96 96 pspec_ass=-9 97 97 pkao=-99.99 98 98 pweightmolar=-789.0 ! read failure indicator value 99 99 100 101 100 ! Open the SPECIES file and read species names and properties 101 !************************************************************ 102 102 specnum(pos_spec)=id_spec 103 103 write(aspecnumb,'(i3.3)') specnum(pos_spec) 104 104 open(unitspecies,file=path(1)(1:length(1))//'SPECIES/SPECIES_'//aspecnumb,status='old',form='formatted',err=998) 105 106 if (verbosity.gt.0) then 107 write(*,*) 'reading SPECIES',specnum(pos_spec) 108 endif 105 !write(*,*) 'reading SPECIES',specnum(pos_spec) 109 106 110 107 ASSSPEC=.FALSE. 111 108 112 109 ! try namelist input 113 110 read(unitspecies,species_params,iostat=readerror) 114 111 close(unitspecies) 115 112 116 113 if ((pweightmolar.eq.-789.0).or.(readerror.ne.0)) then ! no namelist found 117 114 … … 125 122 126 123 read(unitspecies,'(a10)',end=22) species(pos_spec) 127 124 ! write(*,*) species(pos_spec) 128 125 read(unitspecies,'(f18.1)',end=22) decay(pos_spec) 129 126 ! write(*,*) decay(pos_spec) 130 127 read(unitspecies,'(e18.1)',end=22) weta(pos_spec) 131 128 ! write(*,*) weta(pos_spec) 132 129 read(unitspecies,'(f18.2)',end=22) wetb(pos_spec) 133 134 135 136 read(unitspecies,'(e18.1)',end=22) weta_in(pos_spec)137 138 read(unitspecies,'(f18.2)',end=22) wetb_in(pos_spec)139 140 141 142 143 130 ! write(*,*) wetb(pos_spec) 131 132 !*** NIK 31.01.2013: including in-cloud scavening parameters 133 read(unitspecies,'(e18.1)',end=22) weta_in(pos_spec) 134 ! write(*,*) weta_in(pos_spec) 135 read(unitspecies,'(f18.2)',end=22) wetb_in(pos_spec) 136 ! write(*,*) wetb_in(pos_spec) 137 ! read(unitspecies,'(f18.2)',end=22) wetc_in(pos_spec) 138 ! write(*,*) wetc_in(pos_spec) 139 ! read(unitspecies,'(f18.2)',end=22) wetd_in(pos_spec) 140 ! write(*,*) wetd_in(pos_spec) 144 141 145 142 read(unitspecies,'(f18.1)',end=22) reldiff(pos_spec) 146 143 ! write(*,*) reldiff(pos_spec) 147 144 read(unitspecies,'(e18.1)',end=22) henry(pos_spec) 148 145 ! write(*,*) henry(pos_spec) 149 146 read(unitspecies,'(f18.1)',end=22) f0(pos_spec) 150 147 ! write(*,*) f0(pos_spec) 151 148 read(unitspecies,'(e18.1)',end=22) density(pos_spec) 152 149 ! write(*,*) density(pos_spec) 153 150 read(unitspecies,'(e18.1)',end=22) dquer(pos_spec) 154 151 ! write(*,*) dquer(pos_spec) 155 152 read(unitspecies,'(e18.1)',end=22) dsigma(pos_spec) 156 153 ! write(*,*) dsigma(pos_spec) 157 154 read(unitspecies,'(f18.2)',end=22) dryvel(pos_spec) 158 155 ! write(*,*) dryvel(pos_spec) 159 156 read(unitspecies,'(f18.2)',end=22) weightmolar(pos_spec) 160 ! write(*,*) weightmolar(pos_spec) 161 read(unitspecies,'(e18.1)',end=22) ohreact(pos_spec) 162 ! write(*,*) ohreact(pos_spec) 157 ! write(*,*) weightmolar(pos_spec) 158 read(unitspecies,'(e18.2)',end=22) ohcconst(pos_spec) 159 ! write(*,*) ohcconst(pos_spec) 160 read(unitspecies,'(f8.2)',end=22) ohdconst(pos_spec) 161 ! write(*,*) ohdconst(pos_spec) 163 162 read(unitspecies,'(i18)',end=22) spec_ass(pos_spec) 164 163 ! write(*,*) spec_ass(pos_spec) 165 164 read(unitspecies,'(f18.2)',end=22) kao(pos_spec) 166 165 ! write(*,*) kao(pos_spec) 167 166 168 167 pspecies=species(pos_spec) … … 172 171 pweta_in=weta_in(pos_spec) 173 172 pwetb_in=wetb_in(pos_spec) 174 pwetc_in=wetc_in(pos_spec)175 pwetd_in=wetd_in(pos_spec)173 ! pwetc_in=wetc_in(pos_spec) 174 ! pwetd_in=wetd_in(pos_spec) 176 175 preldiff=reldiff(pos_spec) 177 176 phenry=henry(pos_spec) … … 182 181 pdryvel=dryvel(pos_spec) 183 182 pweightmolar=weightmolar(pos_spec) 184 pohreact=ohreact(pos_spec) 183 pohcconst=ohcconst(pos_spec) 184 pohdconst=ohdconst(pos_spec) 185 185 pspec_ass=spec_ass(pos_spec) 186 186 pkao=kao(pos_spec) … … 194 194 weta_in(pos_spec)=pweta_in 195 195 wetb_in(pos_spec)=pwetb_in 196 wetc_in(pos_spec)=pwetc_in197 wetd_in(pos_spec)=pwetd_in196 ! wetc_in(pos_spec)=pwetc_in 197 ! wetd_in(pos_spec)=pwetd_in 198 198 reldiff(pos_spec)=preldiff 199 199 henry(pos_spec)=phenry … … 204 204 dryvel(pos_spec)=pdryvel 205 205 weightmolar(pos_spec)=pweightmolar 206 ohreact(pos_spec)=pohreact 206 ohcconst(pos_spec)=pohcconst 207 ohdconst(pos_spec)=pohdconst 207 208 spec_ass(pos_spec)=pspec_ass 208 209 kao(pos_spec)=pkao … … 212 213 i=pos_spec 213 214 215 !NIK 16.02.2015 216 ! Check scavenging parameters given in SPECIES file 217 if (dquer(pos_spec).gt.0) then !is particle 218 write(*,'(a,f5.2)') ' Particle below-cloud scavenging parameter A & 219 &(Rain collection efficiency) ', weta(pos_spec) 220 write(*,'(a,f5.2)') ' Particle below-cloud scavenging parameter B & 221 &(Snow collection efficiency) ', wetb(pos_spec) 222 if (weta(pos_spec).gt.1.0 .or. wetb(pos_spec).gt.1.0) then 223 write(*,*) '*******************************************' 224 write(*,*) ' WARNING: Particle below-cloud scavenging parameter A or B & 225 &is out of likely range' 226 write(*,*) ' Likely range is 0.0-1.0' 227 write(*,*) '*******************************************' 228 endif 229 write(*,'(a,f5.2)') ' Particle in-cloud scavenging parameter Ai & 230 &(CCN efficiency) ', weta_in(pos_spec) 231 write(*,'(a,f5.2)') ' Particle in-cloud scavenging parameter Bi & 232 &(IN efficiency) ', wetb_in(pos_spec) 233 if (weta_in(pos_spec).gt.1.0 .or. weta_in(pos_spec).lt.0.7 )then 234 write(*,*) '*******************************************' 235 write(*,*) ' WARNING: Particle in-cloud scavenging parameter A is out of likely range' 236 write(*,*) ' The default value is 0.9 for CCN ' 237 write(*,*) '*******************************************' 238 endif 239 if (wetb_in(pos_spec).gt.0.2 .or. wetb_in(pos_spec).lt.0.01) then 240 write(*,*) '*******************************************' 241 write(*,*) ' WARNING: Particle in-cloud scavenging parameter B is out of likely range' 242 write(*,*) ' The default value is 0.1 for IN ' 243 write(*,*) '*******************************************' 244 endif 245 246 else !is gas 247 write(*,'(a,f5.2)') ' Gas below-cloud scavenging parameter A ', weta(pos_spec) 248 write(*,'(a,f5.2)') ' Gas below-cloud scavenging parameter B ', wetb(pos_spec) 249 write(*,*) ' Gas in-cloud scavenging uses default values as in Hertel et al 1995' 250 if (wetb(pos_spec).gt.0.) then !if wet deposition is turned on 251 if (wetb(pos_spec).gt.0.8 .or. wetb(pos_spec).lt.0.6) then 252 write(*,*) '*******************************************' 253 write(*,*) ' WARNING: Gas below-cloud scavenging parameter B is out of likely range' 254 write(*,*) ' Likely range is 0.6 to 0.8 (see Hertel et al 1995)' 255 write(*,*) '*******************************************' 256 endif 257 end if 258 if (weta(pos_spec).gt.0.) then !if wet deposition is turned on 259 if (weta(pos_spec).gt.1E-04 .or. weta(pos_spec).lt.1E-09) then 260 write(*,*) '*******************************************' 261 write(*,*) ' WARNING: Gas below-cloud scavenging parameter A is out of likely range' 262 write(*,*) ' Likely range is 1E-04 to 1E-08 (see Hertel et al 1995)' 263 write(*,*) '*******************************************' 264 endif 265 end if 266 endif 267 268 214 269 if ((weta(pos_spec).gt.0).and.(henry(pos_spec).le.0)) then 215 if (dquer(pos_spec).le.0) goto 996 ! no particle, no henry set270 if (dquer(pos_spec).le.0) goto 996 ! no particle, no henry set 216 271 endif 217 272 … … 240 295 stop 241 296 endif 242 20 continue 297 20 continue 298 299 300 ! Read in daily and day-of-week variation of emissions, if available 301 !******************************************************************* 302 ! HSO: This is not yet implemented as namelist parameters 303 304 do j=1,24 ! initialize everything to no variation 305 area_hour(i,j)=1. 306 point_hour(i,j)=1. 307 end do 308 do j=1,7 309 area_dow(i,j)=1. 310 point_dow(i,j)=1. 311 end do 243 312 244 313 if (readerror.ne.0) then ! text format input 245 246 ! Read in daily and day-of-week variation of emissions, if available247 !*******************************************************************248 ! HSO: This is not yet implemented as namelist parameters249 250 do j=1,24 ! initialize everything to no variation251 area_hour(i,j)=1.252 point_hour(i,j)=1.253 end do254 do j=1,7255 area_dow(i,j)=1.256 point_dow(i,j)=1.257 end do258 314 259 315 read(unitspecies,*,end=22) … … 270 326 22 close(unitspecies) 271 327 272 273 if (nmlout. eqv..true.) then274 open(unitspecies,file=path(2)(1:length(2))//'SPECIES_'//aspecnumb//'.namelist',access='append',status=' new',err=1000)328 ! namelist output if requested 329 if (nmlout.and.lroot) then 330 open(unitspecies,file=path(2)(1:length(2))//'SPECIES_'//aspecnumb//'.namelist',access='append',status='replace',err=1000) 275 331 write(unitspecies,nml=species_params) 276 332 close(unitspecies) … … 279 335 return 280 336 281 996 337 996 write(*,*) '#####################################################' 282 338 write(*,*) '#### FLEXPART MODEL ERROR! #### ' 283 339 write(*,*) '#### WET DEPOSITION SWITCHED ON, BUT NO HENRYS #### ' … … 288 344 289 345 290 997 346 997 write(*,*) '#####################################################' 291 347 write(*,*) '#### FLEXPART MODEL ERROR! #### ' 292 348 write(*,*) '#### THE ASSSOCIATED SPECIES HAS TO BE DEFINED #### ' … … 298 354 299 355 300 998 356 998 write(*,*) '#####################################################' 301 357 write(*,*) '#### FLEXPART MODEL ERROR! #### ' 302 358 write(*,*) '#### THE SPECIES FILE FOR SPECIES ', id_spec
Note: See TracChangeset
for help on using the changeset viewer.