Changes from branches/petra/src/concoutput_nest.f90 at r36 to trunk/src/concoutput_nest.f90 at r4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/concoutput_nest.f90
r36 r4 1 1 !********************************************************************** 2 ! Copyright 1998 -2015*2 ! Copyright 1998,1999,2000,2001,2002,2005,2007,2008,2009,2010 * 3 3 ! Andreas Stohl, Petra Seibert, A. Frank, Gerhard Wotawa, * 4 4 ! Caroline Forster, Sabine Eckhardt, John Burkhart, Harald Sodemann * … … 45 45 ! * 46 46 ! 2008 new sparse matrix format * 47 ! PS, 2/2015: option to produce incremental deposition output48 ! access= -> position=49 47 ! * 50 48 !***************************************************************************** … … 114 112 115 113 116 if (ldirect.eq.1) then 117 do ks=1,nspec 118 do kp=1,maxpointspec_act 119 tot_mu(ks,kp)=1 114 if (ldirect.eq.1) then 115 do ks=1,nspec 116 do kp=1,maxpointspec_act 117 tot_mu(ks,kp)=1 118 end do 119 end do 120 else 121 do ks=1,nspec 122 do kp=1,maxpointspec_act 123 tot_mu(ks,kp)=xmass(kp,ks) 124 end do 120 125 end do 121 end do 122 else 123 do ks=1,nspec 124 do kp=1,maxpointspec_act 125 tot_mu(ks,kp)=xmass(kp,ks) 126 end do 127 end do 128 endif 126 endif 129 127 130 128 … … 164 162 end do 165 163 166 do i=1,numreceptor 167 xl=xreceptor(i) 168 yl=yreceptor(i) 169 iix=max(min(nint(xl),nxmin1),0) 170 jjy=max(min(nint(yl),nymin1),0) 171 densityoutrecept(i)=rho(iix,jjy,1,2) 172 end do 173 174 175 ! Output is different for forward and backward simulations 176 do kz=1,numzgrid 177 do jy=0,numygridn-1 178 do ix=0,numxgridn-1 179 if (ldirect.eq.1) then 180 factor3d(ix,jy,kz)=1.e12/volumen(ix,jy,kz)/outnum 181 else 182 factor3d(ix,jy,kz)=real(abs(loutaver))/outnum 183 endif 164 do i=1,numreceptor 165 xl=xreceptor(i) 166 yl=yreceptor(i) 167 iix=max(min(nint(xl),nxmin1),0) 168 jjy=max(min(nint(yl),nymin1),0) 169 densityoutrecept(i)=rho(iix,jjy,1,2) 170 end do 171 172 173 ! Output is different for forward and backward simulations 174 do kz=1,numzgrid 175 do jy=0,numygridn-1 176 do ix=0,numxgridn-1 177 if (ldirect.eq.1) then 178 factor3d(ix,jy,kz)=1.e12/volumen(ix,jy,kz)/outnum 179 else 180 factor3d(ix,jy,kz)=real(abs(loutaver))/outnum 181 endif 182 end do 184 183 end do 185 184 end do 186 end do187 185 188 186 !********************************************************************* … … 193 191 do ks=1,nspec 194 192 195 write(anspec,'(i3.3)') ks 196 if ((iout.eq.1).or.(iout.eq.3).or.(iout.eq.5)) then 197 if (ldirect.eq.1) then 198 open(unitoutgrid,file=path(2)(1:length(2))//'grid_conc_nest_' & 199 //adate// atime//'_'//anspec,form='unformatted') 200 else 201 open(unitoutgrid,file=path(2)(1:length(2))//'grid_time_nest_' & 202 //adate// atime//'_'//anspec,form='unformatted') 203 endif 204 write(unitoutgrid) itime 205 endif 206 207 if ((iout.eq.2).or.(iout.eq.3)) then ! mixing ratio 208 open(unitoutgridppt,file=path(2)(1:length(2))//'grid_pptv_nest_' & 209 //adate// atime//'_'//anspec,form='unformatted') 210 211 write(unitoutgridppt) itime 193 write(anspec,'(i3.3)') ks 194 if ((iout.eq.1).or.(iout.eq.3).or.(iout.eq.5)) then 195 if (ldirect.eq.1) then 196 open(unitoutgrid,file=path(2)(1:length(2))//'grid_conc_nest_' & 197 //adate// & 198 atime//'_'//anspec,form='unformatted') 199 else 200 open(unitoutgrid,file=path(2)(1:length(2))//'grid_time_nest_' & 201 //adate// & 202 atime//'_'//anspec,form='unformatted') 212 203 endif 213 214 do kp=1,maxpointspec_act 215 do nage=1,nageclass 216 217 do jy=0,numygridn-1 218 do ix=0,numxgridn-1 219 220 ! WET DEPOSITION 221 if ((WETDEP).and.(ldirect.gt.0)) then 204 write(unitoutgrid) itime 205 endif 206 207 if ((iout.eq.2).or.(iout.eq.3)) then ! mixing ratio 208 open(unitoutgridppt,file=path(2)(1:length(2))//'grid_pptv_nest_' & 209 //adate// & 210 atime//'_'//anspec,form='unformatted') 211 212 write(unitoutgridppt) itime 213 endif 214 215 do kp=1,maxpointspec_act 216 do nage=1,nageclass 217 218 do jy=0,numygridn-1 219 do ix=0,numxgridn-1 220 221 ! WET DEPOSITION 222 if ((WETDEP).and.(ldirect.gt.0)) then 222 223 do l=1,nclassunc 223 224 auxgrid(l)=wetgriduncn(ix,jy,ks,kp,l,nage) 224 225 end do 225 call mean(auxgrid,wetgrid(ix,jy), wetgridsigma(ix,jy),nclassunc) 226 ! Multiply by number of classes to get total concentration 227 wetgrid(ix,jy)=wetgrid(ix,jy)*nclassunc 228 ! Calculate standard deviation of the mean 229 wetgridsigma(ix,jy)= wetgridsigma(ix,jy)* sqrt(real(nclassunc)) 230 endif 231 232 ! DRY DEPOSITION 233 if ((DRYDEP).and.(ldirect.gt.0)) then 226 call mean(auxgrid,wetgrid(ix,jy), & 227 wetgridsigma(ix,jy),nclassunc) 228 ! Multiply by number of classes to get total concentration 229 wetgrid(ix,jy)=wetgrid(ix,jy) & 230 *nclassunc 231 ! Calculate standard deviation of the mean 232 wetgridsigma(ix,jy)= & 233 wetgridsigma(ix,jy)* & 234 sqrt(real(nclassunc)) 235 endif 236 237 ! DRY DEPOSITION 238 if ((DRYDEP).and.(ldirect.gt.0)) then 234 239 do l=1,nclassunc 235 240 auxgrid(l)=drygriduncn(ix,jy,ks,kp,l,nage) 236 241 end do 237 call mean(auxgrid,drygrid(ix,jy), drygridsigma(ix,jy),nclassunc) 238 ! Multiply by number of classes to get total concentration 239 drygrid(ix,jy)=drygrid(ix,jy)* nclassunc 240 ! Calculate standard deviation of the mean 241 drygridsigma(ix,jy)= drygridsigma(ix,jy)* sqrt(real(nclassunc)) 242 endif 243 244 ! CONCENTRATION OR MIXING RATIO 245 do kz=1,numzgrid 242 call mean(auxgrid,drygrid(ix,jy), & 243 drygridsigma(ix,jy),nclassunc) 244 ! Multiply by number of classes to get total concentration 245 drygrid(ix,jy)=drygrid(ix,jy)* & 246 nclassunc 247 ! Calculate standard deviation of the mean 248 drygridsigma(ix,jy)= & 249 drygridsigma(ix,jy)* & 250 sqrt(real(nclassunc)) 251 endif 252 253 ! CONCENTRATION OR MIXING RATIO 254 do kz=1,numzgrid 246 255 do l=1,nclassunc 247 256 auxgrid(l)=griduncn(ix,jy,kz,ks,kp,l,nage) 248 257 end do 249 call mean(auxgrid,grid(ix,jy,kz), gridsigma(ix,jy,kz),nclassunc) 250 ! Multiply by number of classes to get total concentration 251 grid(ix,jy,kz)= grid(ix,jy,kz)*nclassunc 252 ! Calculate standard deviation of the mean 253 gridsigma(ix,jy,kz)= gridsigma(ix,jy,kz)* sqrt(real(nclassunc)) 254 end do 258 call mean(auxgrid,grid(ix,jy,kz), & 259 gridsigma(ix,jy,kz),nclassunc) 260 ! Multiply by number of classes to get total concentration 261 grid(ix,jy,kz)= & 262 grid(ix,jy,kz)*nclassunc 263 ! Calculate standard deviation of the mean 264 gridsigma(ix,jy,kz)= & 265 gridsigma(ix,jy,kz)* & 266 sqrt(real(nclassunc)) 255 267 end do 256 268 end do 257 258 259 !******************************************************************* 260 ! Generate output: may be in concentration (ng/m3) or in mixing 261 ! ratio (ppt) or both 262 ! Output the position and the values alternated multiplied by 263 ! 1 or -1, first line is number of values, number of positions 264 ! For backward simulations, the unit is seconds, stored in grid_time 265 !******************************************************************* 266 267 ! Concentration output 268 !********************* 269 if ((iout.eq.1).or.(iout.eq.3).or.(iout.eq.5)) then 270 271 ! Wet deposition 272 sp_count_i=0 273 sp_count_r=0 274 sp_fact=-1. 275 sp_zer=.true. 276 if ((ldirect.eq.1).and.(WETDEP)) then 277 do jy=0,numygridn-1 278 do ix=0,numxgridn-1 279 ! concentration greater zero 280 if (wetgrid(ix,jy).gt.smallnum) then 281 if (sp_zer.eqv..true.) then ! first non zero value 282 sp_count_i=sp_count_i+1 283 sparse_dump_i(sp_count_i)=ix+jy*numxgridn 284 sp_zer=.false. 285 sp_fact=sp_fact*(-1.) 286 endif 287 sp_count_r=sp_count_r+1 288 sparse_dump_r(sp_count_r)= sp_fact*1.e12*wetgrid(ix,jy)/arean(ix,jy) 269 end do 270 271 272 !******************************************************************* 273 ! Generate output: may be in concentration (ng/m3) or in mixing 274 ! ratio (ppt) or both 275 ! Output the position and the values alternated multiplied by 276 ! 1 or -1, first line is number of values, number of positions 277 ! For backward simulations, the unit is seconds, stored in grid_time 278 !******************************************************************* 279 280 ! Concentration output 281 !********************* 282 if ((iout.eq.1).or.(iout.eq.3).or.(iout.eq.5)) then 283 284 ! Wet deposition 285 sp_count_i=0 286 sp_count_r=0 287 sp_fact=-1. 288 sp_zer=.true. 289 if ((ldirect.eq.1).and.(WETDEP)) then 290 do jy=0,numygridn-1 291 do ix=0,numxgridn-1 292 !oncentraion greater zero 293 if (wetgrid(ix,jy).gt.smallnum) then 294 if (sp_zer.eqv..true.) then ! first non zero value 295 sp_count_i=sp_count_i+1 296 sparse_dump_i(sp_count_i)=ix+jy*numxgridn 297 sp_zer=.false. 298 sp_fact=sp_fact*(-1.) 299 endif 300 sp_count_r=sp_count_r+1 301 sparse_dump_r(sp_count_r)= & 302 sp_fact*1.e12*wetgrid(ix,jy)/arean(ix,jy) 289 303 ! sparse_dump_u(sp_count_r)= 290 304 !+ 1.e12*wetgridsigma(ix,jy,ks,kp,nage)/area(ix,jy) 291 else ! concentration is zero 292 sp_zer=.true. 293 endif 294 end do 295 end do 296 else 297 sp_count_i=0 298 sp_count_r=0 299 endif 300 write(unitoutgrid) sp_count_i 301 write(unitoutgrid) (sparse_dump_i(i),i=1,sp_count_i) 302 write(unitoutgrid) sp_count_r 303 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 304 ! write(unitoutgrid) sp_count_u 305 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 306 307 ! Dry deposition 308 sp_count_i=0 309 sp_count_r=0 310 sp_fact=-1. 311 sp_zer=.true. 312 if ((ldirect.eq.1).and.(DRYDEP)) then 313 do jy=0,numygridn-1 314 do ix=0,numxgridn-1 315 if (drygrid(ix,jy).gt.smallnum) then 316 if (sp_zer.eqv..true.) then ! first non zero value 317 sp_count_i=sp_count_i+1 318 sparse_dump_i(sp_count_i)=ix+jy*numxgridn 319 sp_zer=.false. 320 sp_fact=sp_fact*(-1.) 321 endif 322 sp_count_r=sp_count_r+1 323 sparse_dump_r(sp_count_r)= sp_fact* & 324 1.e12*drygrid(ix,jy)/arean(ix,jy) 305 else ! concentration is zero 306 sp_zer=.true. 307 endif 308 end do 309 end do 310 else 311 sp_count_i=0 312 sp_count_r=0 313 endif 314 write(unitoutgrid) sp_count_i 315 write(unitoutgrid) (sparse_dump_i(i),i=1,sp_count_i) 316 write(unitoutgrid) sp_count_r 317 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 318 ! write(unitoutgrid) sp_count_u 319 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 320 321 ! Dry deposition 322 sp_count_i=0 323 sp_count_r=0 324 sp_fact=-1. 325 sp_zer=.true. 326 if ((ldirect.eq.1).and.(DRYDEP)) then 327 do jy=0,numygridn-1 328 do ix=0,numxgridn-1 329 if (drygrid(ix,jy).gt.smallnum) then 330 if (sp_zer.eqv..true.) then ! first non zero value 331 sp_count_i=sp_count_i+1 332 sparse_dump_i(sp_count_i)=ix+jy*numxgridn 333 sp_zer=.false. 334 sp_fact=sp_fact*(-1.) 335 endif 336 sp_count_r=sp_count_r+1 337 sparse_dump_r(sp_count_r)= & 338 sp_fact* & 339 1.e12*drygrid(ix,jy)/arean(ix,jy) 325 340 ! sparse_dump_u(sp_count_r)= 326 341 !+ 1.e12*drygridsigma(ix,jy,ks,kp,nage)/area(ix,jy) 327 else ! concentration is zero 328 sp_zer=.true. 329 endif 330 end do 331 end do 332 else 333 sp_count_i=0 334 sp_count_r=0 335 endif 336 write(unitoutgrid) sp_count_i 337 write(unitoutgrid) (sparse_dump_i(i),i=1,sp_count_i) 338 write(unitoutgrid) sp_count_r 339 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 340 ! write(*,*) sp_count_u 341 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 342 343 344 345 ! Concentrations 346 sp_count_i=0 347 sp_count_r=0 348 sp_fact=-1. 349 sp_zer=.true. 350 do kz=1,numzgrid 351 do jy=0,numygridn-1 352 do ix=0,numxgridn-1 353 if (grid(ix,jy,kz).gt.smallnum) then 354 if (sp_zer.eqv..true.) then ! first non zero value 355 sp_count_i=sp_count_i+1 356 sparse_dump_i(sp_count_i)= & 357 ix+jy*numxgridn+kz*numxgridn*numygridn 358 sp_zer=.false. 359 sp_fact=sp_fact*(-1.) 342 else ! concentration is zero 343 sp_zer=.true. 360 344 endif 361 sp_count_r=sp_count_r+1 362 sparse_dump_r(sp_count_r)= sp_fact* grid(ix,jy,kz)* & 363 factor3d(ix,jy,kz)/tot_mu(ks,kp) 345 end do 346 end do 347 else 348 sp_count_i=0 349 sp_count_r=0 350 endif 351 write(unitoutgrid) sp_count_i 352 write(unitoutgrid) (sparse_dump_i(i),i=1,sp_count_i) 353 write(unitoutgrid) sp_count_r 354 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 355 ! write(*,*) sp_count_u 356 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 357 358 359 360 ! Concentrations 361 sp_count_i=0 362 sp_count_r=0 363 sp_fact=-1. 364 sp_zer=.true. 365 do kz=1,numzgrid 366 do jy=0,numygridn-1 367 do ix=0,numxgridn-1 368 if (grid(ix,jy,kz).gt.smallnum) then 369 if (sp_zer.eqv..true.) then ! first non zero value 370 sp_count_i=sp_count_i+1 371 sparse_dump_i(sp_count_i)= & 372 ix+jy*numxgridn+kz*numxgridn*numygridn 373 sp_zer=.false. 374 sp_fact=sp_fact*(-1.) 375 endif 376 sp_count_r=sp_count_r+1 377 sparse_dump_r(sp_count_r)= & 378 sp_fact* & 379 grid(ix,jy,kz)* & 380 factor3d(ix,jy,kz)/tot_mu(ks,kp) 364 381 ! if ((factor(ix,jy,kz)/tot_mu(ks,kp)).eq.0) 365 382 ! + write (*,*) factor(ix,jy,kz),tot_mu(ks,kp),ks,kp … … 367 384 !+ ,gridsigma(ix,jy,kz,ks,kp,nage)* 368 385 !+ factor(ix,jy,kz)/tot_mu(ks,kp) 369 else ! concentration is zero 370 sp_zer=.true. 371 endif 386 else ! concentration is zero 387 sp_zer=.true. 388 endif 389 end do 390 end do 372 391 end do 373 end do 374 end do 375 write(unitoutgrid) sp_count_i 376 write(unitoutgrid) (sparse_dump_i(i),i=1,sp_count_i) 377 write(unitoutgrid) sp_count_r 378 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 379 ! write(unitoutgrid) sp_count_u 380 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 381 382 383 384 endif ! concentration output 385 386 ! Mixing ratio output 387 !******************** 388 389 if ((iout.eq.2).or.(iout.eq.3)) then ! mixing ratio 390 391 ! Wet deposition 392 sp_count_i=0 393 sp_count_r=0 394 sp_fact=-1. 395 sp_zer=.true. 396 if ((ldirect.eq.1).and.(WETDEP)) then 392 write(unitoutgrid) sp_count_i 393 write(unitoutgrid) (sparse_dump_i(i),i=1,sp_count_i) 394 write(unitoutgrid) sp_count_r 395 write(unitoutgrid) (sparse_dump_r(i),i=1,sp_count_r) 396 ! write(unitoutgrid) sp_count_u 397 ! write(unitoutgrid) (sparse_dump_u(i),i=1,sp_count_r) 398 399 400 401 endif ! concentration output 402 403 ! Mixing ratio output 404 !******************** 405 406 if ((iout.eq.2).or.(iout.eq.3)) then ! mixing ratio 407 408 ! Wet deposition 409 sp_count_i=0 410 sp_count_r=0 411 sp_fact=-1. 412 sp_zer=.true. 413 if ((ldirect.eq.1).and.(WETDEP)) then 397 414 do jy=0,numygridn-1 398 415 do ix=0,numxgridn-1 399 if (wetgrid(ix,jy).gt.smallnum) then 400 if (sp_zer.eqv..true.) then ! first non zero value 401 sp_count_i=sp_count_i+1 402 sparse_dump_i(sp_count_i)= ix+jy*numxgridn 403 sp_zer=.false. 404 sp_fact=sp_fact*(-1.) 405 endif 406 sp_count_r=sp_count_r+1 407 sparse_dump_r(sp_count_r)= sp_fact* & 408 1.e12*wetgrid(ix,jy)/arean(ix,jy) 409 ! sparse_dump_u(sp_count_r)= 410 ! + ,1.e12*wetgridsigma(ix,jy,ks,kp,nage)/area(ix,jy) 416 if (wetgrid(ix,jy).gt.smallnum) then 417 if (sp_zer.eqv..true.) then ! first non zero value 418 sp_count_i=sp_count_i+1 419 sparse_dump_i(sp_count_i)= & 420 ix+jy*numxgridn 421 sp_zer=.false. 422 sp_fact=sp_fact*(-1.) 423 endif 424 sp_count_r=sp_count_r+1 425 sparse_dump_r(sp_count_r)= & 426 sp_fact* & 427 1.e12*wetgrid(ix,jy)/arean(ix,jy) 428 ! sparse_dump_u(sp_count_r)= 429 ! + ,1.e12*wetgridsigma(ix,jy,ks,kp,nage)/area(ix,jy) 411 430 else ! concentration is zero 412 sp_zer=.true.431 sp_zer=.true. 413 432 endif 414 433 end do 415 434 end do 416 else417 sp_count_i=0418 sp_count_r=0419 endif420 write(unitoutgridppt) sp_count_i421 write(unitoutgridppt) (sparse_dump_i(i),i=1,sp_count_i)422 write(unitoutgridppt) sp_count_r423 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r)424 425 426 427 428 429 sp_count_i=0430 sp_count_r=0431 sp_fact=-1.432 sp_zer=.true.433 if ((ldirect.eq.1).and.(DRYDEP)) then435 else 436 sp_count_i=0 437 sp_count_r=0 438 endif 439 write(unitoutgridppt) sp_count_i 440 write(unitoutgridppt) (sparse_dump_i(i),i=1,sp_count_i) 441 write(unitoutgridppt) sp_count_r 442 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r) 443 ! write(unitoutgridppt) sp_count_u 444 ! write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r) 445 446 447 ! Dry deposition 448 sp_count_i=0 449 sp_count_r=0 450 sp_fact=-1. 451 sp_zer=.true. 452 if ((ldirect.eq.1).and.(DRYDEP)) then 434 453 do jy=0,numygridn-1 435 454 do ix=0,numxgridn-1 436 if (drygrid(ix,jy).gt.smallnum) then 437 if (sp_zer.eqv..true.) then ! first non zero value 438 sp_count_i=sp_count_i+1 439 sparse_dump_i(sp_count_i)= ix+jy*numxgridn 440 sp_zer=.false. 441 sp_fact=sp_fact*(-1) 442 endif 443 sp_count_r=sp_count_r+1 444 sparse_dump_r(sp_count_r)= sp_fact* & 445 1.e12*drygrid(ix,jy)/arean(ix,jy) 446 ! sparse_dump_u(sp_count_r)= 447 ! + ,1.e12*drygridsigma(ix,jy,ks,kp,nage)/area(ix,jy) 455 if (drygrid(ix,jy).gt.smallnum) then 456 if (sp_zer.eqv..true.) then ! first non zero value 457 sp_count_i=sp_count_i+1 458 sparse_dump_i(sp_count_i)= & 459 ix+jy*numxgridn 460 sp_zer=.false. 461 sp_fact=sp_fact*(-1) 462 endif 463 sp_count_r=sp_count_r+1 464 sparse_dump_r(sp_count_r)= & 465 sp_fact* & 466 1.e12*drygrid(ix,jy)/arean(ix,jy) 467 ! sparse_dump_u(sp_count_r)= 468 ! + ,1.e12*drygridsigma(ix,jy,ks,kp,nage)/area(ix,jy) 448 469 else ! concentration is zero 449 sp_zer=.true.470 sp_zer=.true. 450 471 endif 451 472 end do 452 473 end do 453 else454 sp_count_i=0455 sp_count_r=0456 endif457 write(unitoutgridppt) sp_count_i458 write(unitoutgridppt) (sparse_dump_i(i),i=1,sp_count_i)459 write(unitoutgridppt) sp_count_r460 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r)461 462 463 464 465 466 sp_count_i=0467 sp_count_r=0468 sp_fact=-1.469 sp_zer=.true.470 do kz=1,numzgrid471 do jy=0,numygridn-1474 else 475 sp_count_i=0 476 sp_count_r=0 477 endif 478 write(unitoutgridppt) sp_count_i 479 write(unitoutgridppt) (sparse_dump_i(i),i=1,sp_count_i) 480 write(unitoutgridppt) sp_count_r 481 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r) 482 ! write(unitoutgridppt) sp_count_u 483 ! write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r) 484 485 486 ! Mixing ratios 487 sp_count_i=0 488 sp_count_r=0 489 sp_fact=-1. 490 sp_zer=.true. 491 do kz=1,numzgrid 492 do jy=0,numygridn-1 472 493 do ix=0,numxgridn-1 473 494 if (grid(ix,jy,kz).gt.smallnum) then … … 475 496 sp_count_i=sp_count_i+1 476 497 sparse_dump_i(sp_count_i)= & 477 ix+jy*numxgridn+kz*numxgridn*numygridn498 ix+jy*numxgridn+kz*numxgridn*numygridn 478 499 sp_zer=.false. 479 500 sp_fact=sp_fact*(-1.) 480 501 endif 481 502 sp_count_r=sp_count_r+1 482 sparse_dump_r(sp_count_r)= sp_fact* 1.e12*grid(ix,jy,kz) & 483 /volumen(ix,jy,kz)/outnum* & 484 weightair/weightmolar(ks)/densityoutgrid(ix,jy,kz) 485 ! sparse_dump_u(sp_count_r)= 486 !+ ,1.e12*gridsigma(ix,jy,kz,ks,kp,nage)/volume(ix,jy,kz)/ 487 !+ outnum*weightair/weightmolar(ks)/ 488 !+ densityoutgrid(ix,jy,kz) 489 else ! concentration is zero 490 sp_zer=.true. 503 sparse_dump_r(sp_count_r)= & 504 sp_fact* & 505 1.e12*grid(ix,jy,kz) & 506 /volumen(ix,jy,kz)/outnum* & 507 weightair/weightmolar(ks)/densityoutgrid(ix,jy,kz) 508 ! sparse_dump_u(sp_count_r)= 509 !+ ,1.e12*gridsigma(ix,jy,kz,ks,kp,nage)/volume(ix,jy,kz)/ 510 !+ outnum*weightair/weightmolar(ks)/ 511 !+ densityoutgrid(ix,jy,kz) 512 else ! concentration is zero 513 sp_zer=.true. 491 514 endif 515 end do 516 end do 517 end do 518 write(unitoutgridppt) sp_count_i 519 write(unitoutgridppt) (sparse_dump_i(i),i=1,sp_count_i) 520 write(unitoutgridppt) sp_count_r 521 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r) 522 ! write(unitoutgridppt) sp_count_u 523 ! write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r) 524 525 endif ! output for ppt 526 527 end do 528 end do 529 530 close(unitoutgridppt) 531 close(unitoutgrid) 532 533 end do 534 535 536 537 ! Reinitialization of grid 538 !************************* 539 540 do ks=1,nspec 541 do kp=1,maxpointspec_act 542 do i=1,numreceptor 543 creceptor(i,ks)=0. 544 end do 545 do jy=0,numygridn-1 546 do ix=0,numxgridn-1 547 do l=1,nclassunc 548 do nage=1,nageclass 549 do kz=1,numzgrid 550 griduncn(ix,jy,kz,ks,kp,l,nage)=0. 492 551 end do 493 552 end do 494 553 end do 495 write(unitoutgridppt) sp_count_i 496 write(unitoutgridppt) (sparse_dump_i(i),i=1,sp_count_i) 497 write(unitoutgridppt) sp_count_r 498 write(unitoutgridppt) (sparse_dump_r(i),i=1,sp_count_r) 499 ! write(unitoutgridppt) sp_count_u 500 ! write(unitoutgridppt) (sparse_dump_u(i),i=1,sp_count_r) 501 502 endif ! output for ppt 503 504 end do 505 end do 506 507 close(unitoutgridppt) 508 close(unitoutgrid) 509 554 end do 555 end do 510 556 end do 511 512 513 514 ! Reinitialization of grid 515 !************************* 516 517 griduncn=0. 518 if (ldep_incr) then ! incremental deposition output 519 wetgriduncn=0. 520 drygriduncn=0. 521 endif 557 end do 558 522 559 523 560 end subroutine concoutput_nest 561
Note: See TracChangeset
for help on using the changeset viewer.