Changeset 08a38b5 in flexpart.git
- Timestamp:
- Oct 3, 2017, 3:44:21 PM (6 years ago)
- Branches:
- master, 10.4.1_pesei, GFS_025, bugfixes+enhancements, dev, release-10, release-10.4.1, scaling-bug, univie
- Children:
- de4c5e9
- Parents:
- bb579a9
- Location:
- src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
src/conccalc.f90
re52967c r08a38b5 193 193 (jy.le.numygrid-1)) then 194 194 if (DRYBKDEP.or.WETBKDEP) then 195 196 197 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ &198 xmass1(i,ks)/rhoi*weight*max(xscav_frac1(i,ks),0.0)199 195 do ks=1,nspec 196 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 197 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 198 xmass1(i,ks)/rhoi*weight*max(xscav_frac1(i,ks),0.0) 199 end do 200 200 else 201 do ks=1,nspec 202 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 203 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 204 xmass1(i,ks)/rhoi*weight 205 end do 201 if (lparticlecountoutput) then 202 do ks=1,nspec 203 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 204 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+1 205 end do 206 else 207 do ks=1,nspec 208 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 209 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 210 xmass1(i,ks)/rhoi*weight 211 end do 212 end if 206 213 endif 207 214 endif … … 336 343 end do 337 344 else 338 do ks=1,nspec 339 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 340 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 341 xmass1(i,ks)/rhoi*weight 342 end do 343 endif 344 endif 345 345 if (lparticlecountoutput) then 346 do ks=1,nspec 347 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 348 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+1 349 end do 350 else 351 do ks=1,nspec 352 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 353 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 354 xmass1(i,ks)/rhoi*weight 355 end do 356 endif 357 endif 358 endif 359 346 360 else ! attribution via uniform kernel 347 361 -
src/conccalc_mpi.f90
re52967c r08a38b5 205 205 if ((ix.ge.0).and.(jy.ge.0).and.(ix.le.numxgrid-1).and. & 206 206 (jy.le.numygrid-1)) then 207 do ks=1,nspec 208 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 209 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 210 xmass1(i,ks)/rhoi*weight 211 end do 207 if (DRYBKDEP.or.WETBKDEP) then 208 do ks=1,nspec 209 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 210 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 211 xmass1(i,ks)/rhoi*weight*max(xscav_frac1(i,ks),0.0) 212 end do 213 else 214 if (lparticlecountoutput) then 215 do ks=1,nspec 216 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 217 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+1 218 end do 219 else 220 do ks=1,nspec 221 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 222 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 223 xmass1(i,ks)/rhoi*weight 224 end do 225 end if 226 endif 212 227 endif 213 228 … … 239 254 if ((jy.ge.0).and.(jy.le.numygrid-1)) then 240 255 w=wx*wy 241 do ks=1,nspec 242 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 256 if (DRYBKDEP.or.WETBKDEP) then 257 do ks=1,nspec 258 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 259 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 260 xmass1(i,ks)/rhoi*w*weight*max(xscav_frac1(i,ks),0.0) 261 end do 262 else 263 do ks=1,nspec 264 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 243 265 gridunc(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 244 266 xmass1(i,ks)/rhoi*weight*w 245 end do 267 end do 268 endif 246 269 endif 247 270 248 271 if ((jyp.ge.0).and.(jyp.le.numygrid-1)) then 249 272 w=wx*(1.-wy) 250 do ks=1,nspec 251 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 273 if (DRYBKDEP.or.WETBKDEP) then 274 do ks=1,nspec 275 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 276 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ & 277 xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0) 278 end do 279 else 280 do ks=1,nspec 281 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 252 282 gridunc(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ & 253 283 xmass1(i,ks)/rhoi*weight*w 254 end do 284 end do 285 endif 255 286 endif 256 287 endif … … 260 291 if ((jyp.ge.0).and.(jyp.le.numygrid-1)) then 261 292 w=(1.-wx)*(1.-wy) 262 do ks=1,nspec 263 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 293 if (DRYBKDEP.or.WETBKDEP) then 294 do ks=1,nspec 295 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 296 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ & 297 xmass1(i,ks)/rhoi*w*weight*max(xscav_frac1(i,ks),0.0) 298 end do 299 else 300 do ks=1,nspec 301 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 264 302 gridunc(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ & 265 303 xmass1(i,ks)/rhoi*weight*w 266 end do 304 end do 305 endif 267 306 endif 268 307 269 308 if ((jy.ge.0).and.(jy.le.numygrid-1)) then 270 309 w=(1.-wx)*wy 271 do ks=1,nspec 272 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= & 310 if (DRYBKDEP.or.WETBKDEP) then 311 do ks=1,nspec 312 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= & 313 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 314 xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0) 315 end do 316 else 317 do ks=1,nspec 318 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= & 273 319 gridunc(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 274 320 xmass1(i,ks)/rhoi*weight*w 275 end do 321 end do 322 endif 276 323 endif 277 324 endif … … 304 351 if ((ix.ge.0).and.(jy.ge.0).and.(ix.le.numxgridn-1).and. & 305 352 (jy.le.numygridn-1)) then 306 do ks=1,nspec 307 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 353 if (DRYBKDEP.or.WETBKDEP) then 354 do ks=1,nspec 355 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 308 356 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 309 xmass1(i,ks)/rhoi*weight 310 end do 357 xmass1(i,ks)/rhoi*weight*max(xscav_frac1(i,ks),0.0) 358 end do 359 else 360 if (lparticlecountoutput) then 361 do ks=1,nspec 362 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 363 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+1 364 end do 365 else 366 do ks=1,nspec 367 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 368 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 369 xmass1(i,ks)/rhoi*weight 370 end do 371 endif 372 endif 311 373 endif 312 374 … … 338 400 if ((jy.ge.0).and.(jy.le.numygridn-1)) then 339 401 w=wx*wy 340 do ks=1,nspec 341 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 402 if (DRYBKDEP.or.WETBKDEP) then 403 do ks=1,nspec 404 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 405 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 406 xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0) 407 end do 408 else 409 do ks=1,nspec 410 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)= & 342 411 griduncn(ix,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 343 412 xmass1(i,ks)/rhoi*weight*w 344 end do 413 end do 414 endif 345 415 endif 346 416 347 417 if ((jyp.ge.0).and.(jyp.le.numygridn-1)) then 348 418 w=wx*(1.-wy) 349 do ks=1,nspec 350 griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 419 if (DRYBKDEP.or.WETBKDEP) then 420 do ks=1,nspec 421 griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 422 griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ & 423 xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0) 424 end do 425 else 426 do ks=1,nspec 427 griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 351 428 griduncn(ix,jyp,kz,ks,nrelpointer,nclass(i),nage)+ & 352 429 xmass1(i,ks)/rhoi*weight*w 353 end do 430 end do 431 endif 354 432 endif 355 433 endif … … 359 437 if ((jyp.ge.0).and.(jyp.le.numygridn-1)) then 360 438 w=(1.-wx)*(1.-wy) 361 do ks=1,nspec 362 griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 439 if (DRYBKDEP.or.WETBKDEP) then 440 do ks=1,nspec 441 griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 442 griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ & 443 xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0) 444 end do 445 else 446 do ks=1,nspec 447 griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)= & 363 448 griduncn(ixp,jyp,kz,ks,nrelpointer,nclass(i),nage)+ & 364 449 xmass1(i,ks)/rhoi*weight*w 365 end do 450 end do 451 endif 366 452 endif 367 453 368 454 if ((jy.ge.0).and.(jy.le.numygridn-1)) then 369 455 w=(1.-wx)*wy 370 do ks=1,nspec 371 griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= & 456 if (DRYBKDEP.or.WETBKDEP) then 457 do ks=1,nspec 458 griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= & 459 griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 460 xmass1(i,ks)/rhoi*weight*w*max(xscav_frac1(i,ks),0.0) 461 end do 462 else 463 do ks=1,nspec 464 griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)= & 372 465 griduncn(ixp,jy,kz,ks,nrelpointer,nclass(i),nage)+ & 373 466 xmass1(i,ks)/rhoi*weight*w 374 end do 467 end do 468 endif 375 469 endif 376 470 endif -
src/concoutput.f90
r6985a98 r08a38b5 446 446 endif 447 447 sp_count_r=sp_count_r+1 448 sparse_dump_r(sp_count_r)= & 449 sp_fact* & 450 grid(ix,jy,kz)* & 451 factor3d(ix,jy,kz)/tot_mu(ks,kp) 448 if (lparticlecountoutput) then 449 sparse_dump_r(sp_count_r)= & 450 sp_fact* & 451 grid(ix,jy,kz) 452 else 453 sparse_dump_r(sp_count_r)= & 454 sp_fact* & 455 grid(ix,jy,kz)* & 456 factor3d(ix,jy,kz)/tot_mu(ks,kp) 457 end if 458 459 452 460 ! if ((factor(ix,jy,kz)/tot_mu(ks,kp)).eq.0) 453 461 ! + write (*,*) factor(ix,jy,kz),tot_mu(ks,kp),ks,kp -
src/par_mod.f90
rd8eed02 r08a38b5 60 60 logical, parameter :: lnokernel=.false. 61 61 62 !********************************************************************* 63 ! Set to T to change output units to number of particles per grid cell 64 !********************************************************************* 65 logical, parameter :: lparticlecountoutput=.false. 66 62 67 !*********************************************************** 63 ! Number of directories/files used for FLEXPART input/output68 ! number of directories/files used for FLEXPART input/output 64 69 !*********************************************************** 65 70 … … 141 146 !********************************************* 142 147 143 ! integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92 !ECMWF new 144 integer,parameter :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138 !ECMWF new 145 146 ! integer,parameter :: nxmax=181,nymax=91,nuvzmax=138,nwzmax=138,nzmax=138 !ECMWF new147 148 ! INTEGER,PARAMETER :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138 !NCEP data 149 150 ! integer,parameter :: nxshift=359 ! for ECMWF151 integer,parameter :: nxshift=0 ! for GFS 148 ! ECMWF 149 ! integer,parameter :: nxmax=361,nymax=181,nuvzmax=92,nwzmax=92,nzmax=92,nxshift=359 ! 1.0 degree 92 level 150 integer,parameter :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138,nxshift=359 ! 1.0 degree 138 level 151 ! integer,parameter :: nxmax=721,nymax=361,nuvzmax=138,nwzmax=138,nzmax=138,nxshift=359 ! 0.5 degree 138 level 152 ! integer,parameter :: nxmax=181,nymax=91,nuvzmax=92,nwzmax=92,nzmax=92,nxshift=0 ! CERA 2.0 degree 92 level 153 154 ! GFS 155 ! integer,parameter :: nxmax=361,nymax=181,nuvzmax=138,nwzmax=138,nzmax=138,nxshift=0 156 152 157 153 158 !********************************************* … … 155 160 !********************************************* 156 161 157 integer,parameter :: maxnests= 1,nxmaxn=451,nymaxn=226162 integer,parameter :: maxnests=0,nxmaxn=451,nymaxn=226 158 163 159 164 ! nxmax,nymax maximum dimension of wind fields in x and y … … 213 218 !************************************************** 214 219 215 integer,parameter :: maxpart= 10000000220 integer,parameter :: maxpart=3000000 216 221 integer,parameter :: maxspec=4 217 222
Note: See TracChangeset
for help on using the changeset viewer.