Changeset 05cf28d in flexpart.git for src/readspecies.f90
- Timestamp:
- Apr 22, 2016, 9:35:28 AM (8 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
- Children:
- 356dcb9
- Parents:
- 61df8d9
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/readspecies.f90
r341f4b7 r05cf28d 40 40 ! * 41 41 ! Variables: * 42 ! decaytime(maxtable) half time for radiological decay*43 ! specname(maxtable) names of chemical species, radionuclides*44 ! weta_gas, wetb_gas Parameters for determining below-cloud scavenging*45 ! c cn_aero Parameter for determining in-cloud scavenging*46 ! in_aero Parameter for determining in-cloud scavenging*47 ! ohcconst OH reaction rate constant C*48 ! ohdconst OH reaction rate constant D*49 ! ohnconst OH reaction rate constant n*50 ! id_spec SPECIES number as referenced in RELEASE file*51 ! id_pos position where SPECIES data shall be stored*42 ! decaytime(maxtable) half time for radiological decay * 43 ! specname(maxtable) names of chemical species, radionuclides * 44 ! weta_gas, wetb_gas Parameters for below-cloud scavenging of gasses * 45 ! crain_aero,csnow_aero Parameters for below-cloud scavenging of aerosols * 46 ! ccn_aero,in_aero Parameters for in-cloud scavenging of aerosols * 47 ! ohcconst OH reaction rate constant C * 48 ! ohdconst OH reaction rate constant D * 49 ! ohnconst OH reaction rate constant n * 50 ! id_spec SPECIES number as referenced in RELEASE file * 51 ! id_pos position where SPECIES data shall be stored * 52 52 ! * 53 53 ! Constants: * … … 113 113 close(unitspecies) 114 114 115 ! if ((pweightmolar.eq.-789.0).or.(readerror.ne.0)) then ! no namelist found 116 if ((len(pspecies).eq.0).or.(readerror.ne.0)) then ! no namelist found 115 if ((len(trim(pspecies)).eq.0).or.(readerror.ne.0)) then ! no namelist found 116 if (lroot) write(*,*) "SPECIES file not in NAMELIST format, attempting to & 117 &read as fixed format" 117 118 118 119 readerror=1 … … 150 151 ! write(*,*) density(pos_spec) 151 152 read(unitspecies,'(e18.1)',end=22) dquer(pos_spec) 152 ! 153 ! write(*,*) 'dquer(pos_spec):', dquer(pos_spec) 153 154 read(unitspecies,'(e18.1)',end=22) dsigma(pos_spec) 154 155 ! write(*,*) dsigma(pos_spec) … … 221 222 ! Check scavenging parameters given in SPECIES file 222 223 223 if (weta_gas(pos_spec).gt.0.0 .or. wetb_gas(pos_spec).gt.0.0 .or. ccn_aero(pos_spec).gt.0.0 .or. in_aero(pos_spec).gt.0.0) then 224 225 if (dquer(pos_spec).gt.0) then !is particle 226 if (lroot) then 227 write(*,'(a,f5.2)') ' Particle below-cloud scavenging parameter A & 228 &(Rain collection efficiency) ', crain_aero(pos_spec) 229 write(*,'(a,f5.2)') ' Particle below-cloud scavenging parameter B & 230 &(Snow collection efficiency) ', csnow_aero(pos_spec) 231 end if 232 if (weta_gas(pos_spec).gt.1.0 .or. wetb_gas(pos_spec).gt.1.0) then 233 if (lroot) then 224 if (lroot) then 225 ! Particles 226 !********** 227 if (dquer(pos_spec).gt.0) then 228 if (ccn_aero(pos_spec) .gt. 0) then 229 write(*,'(a,f5.2)') ' Particle CCN efficiency (CCNeff):', ccn_aero(pos_spec) 230 else 231 write(*,'(a)') ' Particle CCN efficiency (CCNeff): OFF' 232 endif 233 if (in_aero(pos_spec) .gt. 0) then 234 write(*,'(a,f5.2)') ' Particle IN efficiency (INeff) :', in_aero(pos_spec) 235 else 236 write(*,'(a)') ' Particle IN efficiency (INeff) : OFF' 237 endif 238 if (crain_aero(pos_spec) .gt. 0) then 239 write(*,'(a,f5.2)') ' Particle Rain efficiency (Crain) :', crain_aero(pos_spec) 240 else 241 write(*,'(a)') ' Particle Rain efficiency (Crain) : OFF' 242 endif 243 if (csnow_aero(pos_spec) .gt. 0) then 244 write(*,'(a,f5.2)') ' Particle Snow efficiency (Csnow) :', csnow_aero(pos_spec) 245 else 246 write(*,'(a)') ' Particle Snow efficiency (Csnow) : OFF' 247 end if 248 if (density(pos_spec) .gt. 0) then 249 write(*,'(a)') ' Dry deposition is turned : ON' 250 else 251 write(*,'(a)') ' Dry deposition is (density<0) : OFF' 252 end if 253 if (crain_aero(pos_spec).gt.10.0 .or. csnow_aero(pos_spec).gt.10.0 .or. & 254 &ccn_aero(pos_spec).gt.1.0 .or. in_aero(pos_spec).gt.1.0) then 234 255 write(*,*) '*******************************************' 235 write(*,*) ' WARNING: Particle below-cloud scavenging parameter A or B & 236 &is out of likely range' 237 write(*,*) ' Likely range is 0.0-1.0' 256 write(*,*) ' WARNING: Particle Scavenging parameter likely out of range ' 257 write(*,*) ' Likely range for Crain 0.0-10' 258 write(*,*) ' Likely range for Csnow 0.0-10' 259 write(*,*) ' Physical range for CCNeff 0.0-1' 260 write(*,*) ' Physical range for INeff 0.0-1' 238 261 write(*,*) '*******************************************' 239 262 end if 240 endif 241 if (lroot) then 242 write(*,'(a,f5.2)') ' Particle in-cloud scavenging parameter Ai & 243 &(CCN efficiency) ', ccn_aero(pos_spec) 244 write(*,'(a,f5.2)') ' Particle in-cloud scavenging parameter Bi & 245 &(IN efficiency) ', in_aero(pos_spec) 246 end if 247 if (ccn_aero(pos_spec).gt.1.0 .or. ccn_aero(pos_spec).lt.0.01) then 248 if (lroot) then 249 write(*,*) '*******************************************' 250 write(*,*) ' WARNING: Particle in-cloud scavenging parameter A is out of likely range' 251 write(*,*) ' Likely range is 0.0-1.0 for CCN ' 252 write(*,*) '*******************************************' 253 end if 254 endif 255 if (in_aero(pos_spec).gt.1.0 .or. in_aero(pos_spec).lt.0.01) then 256 if (lroot) then 257 write(*,*) '*******************************************' 258 write(*,*) ' WARNING: Particle in-cloud scavenging parameter B is out of likely range' 259 write(*,*) ' Likely range is 0.0-1.0 for Ice nuclei (IN) ' 260 write(*,*) '*******************************************' 261 end if 262 endif 263 264 else !is gas 265 if (lroot) then 266 write(*,*) ' Gas below-cloud scavenging parameter A ', weta_gas(pos_spec) 267 write(*,'(a,f5.2)') ' Gas below-cloud scavenging parameter B ', wetb_gas(pos_spec) 268 write(*,*) ' Gas in-cloud scavenging uses default values as in Hertel et al 1995' 269 end if 270 if (weta_gas(pos_spec).gt.0.) then !if wet deposition is turned on 271 if (weta_gas(pos_spec).gt.1E-04 .or. weta_gas(pos_spec).lt.1E-09) then 272 if (lroot) then 263 else 264 ! Gas 265 !**** 266 if (weta_gas(pos_spec) .gt. 0 .and. wetb_gas(pos_spec).gt.0) then 267 write(*,*) ' Wet removal for gases is turned: ON' 268 write(*,*) ' Gas below-cloud scavenging parameter A ', & 269 &weta_gas(pos_spec) 270 write(*,'(a,f5.2)') ' Gas below-cloud scavenging parameter B ', & 271 &wetb_gas(pos_spec) 272 else 273 write(*,*) ' Wet removal for gases is turned: OFF ' 274 end if 275 if (reldiff(i).gt.0.) then 276 write(*,*) ' Dry deposition for gases is turned: ON ' 277 else 278 write(*,*) ' Dry deposition for gases is turned: OFF ' 279 end if 280 if (weta_gas(pos_spec).gt.0.) then !if wet deposition is turned on 281 if (weta_gas(pos_spec).gt.1E-04 .or. weta_gas(pos_spec).lt.1E-09 .or. & 282 &wetb_gas(pos_spec).gt.0.8 .or. wetb_gas(pos_spec).lt.0.4) then 273 283 write(*,*) '*******************************************' 274 write(*,*) ' WARNING: Gas below-cloud scavenging parameter A is out of likely range' 275 write(*,*) ' Likely range is 1E-04 to 1E-08 (see Hertel et al 1995)' 284 write(*,*) ' WARNING: Gas below-cloud scavengig is out of likely range' 285 write(*,*) ' Likely range for A is 1E-04 to 1E-08' 286 write(*,*) ' Likely range for B is 0.60 to 0.80 ' 276 287 write(*,*) '*******************************************' 277 288 end if 278 289 endif 290 291 if (((weta_gas(pos_spec).gt.0).or.(wetb_gas(pos_spec).gt.0)).and.& 292 &(henry(pos_spec).le.0)) then 293 if (dquer(pos_spec).le.0) goto 996 ! no particle, no henry set 294 endif 279 295 end if 280 if (wetb_gas(pos_spec).gt.0.) then !if wet deposition is turned on 281 if (wetb_gas(pos_spec).gt.0.8 .or. wetb_gas(pos_spec).lt.0.6) then 282 if (lroot) then 283 write(*,*) '*******************************************' 284 write(*,*) ' WARNING: Gas below-cloud scavenging parameter B is out of likely range' 285 write(*,*) ' Likely range is 0.6 to 0.8 (see Hertel et al 1995)' 286 write(*,*) '*******************************************' 287 end if 288 endif 289 end if 290 endif 291 endif 292 293 if (((weta_gas(pos_spec).gt.0).or.(wetb_gas(pos_spec).gt.0)).and.(henry(pos_spec).le.0)) then 294 if (dquer(pos_spec).le.0) goto 996 ! no particle, no henry set 295 endif 296 end if 296 297 297 298 if (spec_ass(pos_spec).gt.0) then … … 304 305 endif 305 306 end do 306 if (spec_found.eqv.. FALSE.) then307 if (spec_found.eqv..false.) then 307 308 goto 997 308 309 endif
Note: See TracChangeset
for help on using the changeset viewer.