SourceForge

! ! This file defines a data structure to be used for quantities ! which may need to be defined at grid block interfaces, eg fluxes, ! pressures. ! ! storage used for fluxes at block boundaries. This is used when conservation ! constraints need to be imposed. integer nfluxvar parameter(nfluxvar=2) !<<< USER EDIT integer nfluxes parameter(nfluxes=max(1,nfluxvar)) integer maxblocksfl parameter(maxblocksfl= 1+(maxblocks-1)*min(1,nfluxvar) ) common/fluxes/ . flux_x(nfluxes,1:2,jl_bnd:ju_bnd,kl_bnd:ku_bnd,maxblocksfl), . flux_y(nfluxes,il_bnd:iu_bnd,1:2,kl_bnd:ku_bnd,maxblocksfl), . flux_z(nfluxes,il_bnd:iu_bnd,jl_bnd:ju_bnd,1:2,maxblocksfl) real flux_x,flux_y,flux_z ! real, target :: flux_x,flux_y,flux_z common/tfluxes/ . tflux_x(nfluxes,1:2,jl_bnd:ju_bnd,kl_bnd:ku_bnd,maxblocksfl) . ,tflux_y(nfluxes,il_bnd:iu_bnd,1:2,kl_bnd:ku_bnd,maxblocksfl) . ,tflux_z(nfluxes,il_bnd:iu_bnd,jl_bnd:ju_bnd,1:2,maxblocksfl) real tflux_x,tflux_y,tflux_z ! storage used for cell edges at block boundaries. ! This is used when quantities located at cell edge centers need to ! be used consistently at the boundaries between blocks at different ! refinement levels. integer nedgevar parameter(nedgevar=1) !<<< USER EDIT integer nedges parameter(nedges=max(1,nedgevar)) integer maxblockse parameter(maxblockse= 1+(maxblocks-1)*min(1,nedgevar) ) common/edges/ . bedge_facex_y(nedges,1:2,jl_bnd:ju_bnd+1, . kl_bnd:ku_bnd+1,maxblockse), . bedge_facex_z(nedges,1:2,jl_bnd:ju_bnd+1, . kl_bnd:ku_bnd+1,maxblockse), . bedge_facey_x(nedges,il_bnd:iu_bnd+1,1:2, . kl_bnd:ku_bnd+1,maxblockse), . bedge_facey_z(nedges,il_bnd:iu_bnd+1,1:2, . kl_bnd:ku_bnd+1,maxblockse), . bedge_facez_x(nedges,il_bnd:iu_bnd+1,jl_bnd:ju_bnd+1, . 1:2,maxblockse), . bedge_facez_y(nedges,il_bnd:iu_bnd+1,jl_bnd:ju_bnd+1, . 1:2,maxblockse), . recvarx1e(nedges,1:2,jl_bnd:ju_bnd+1,kl_bnd:ku_bnd+1), . recvary1e(nedges,il_bnd:iu_bnd+1,1:2,kl_bnd:ku_bnd+1), . recvarz1e(nedges,il_bnd:iu_bnd+1,jl_bnd:ju_bnd+1,1:2), . recvarx2e(nedges,1:2,jl_bnd:ju_bnd+1,kl_bnd:ku_bnd+1), . recvary2e(nedges,il_bnd:iu_bnd+1,1:2,kl_bnd:ku_bnd+1), . recvarz2e(nedges,il_bnd:iu_bnd+1,jl_bnd:ju_bnd+1,1:2) real bedge_facex_y,bedge_facex_z,bedge_facey_x real bedge_facey_z,bedge_facez_x,bedge_facez_y ! real, target :: bedge_facex_y,bedge_facex_z,bedge_facey_x ! real, target :: bedge_facey_z,bedge_facez_x,bedge_facez_y real recvarx1e,recvary1e,recvarz1e real recvarx2e,recvary2e,recvarz2e common/tedges/ . tbedge_facex_y(nedges,1:2,jl_bnd:ju_bnd+1, . kl_bnd:ku_bnd+1,maxblockse), . tbedge_facex_z(nedges,1:2,jl_bnd:ju_bnd+1, . kl_bnd:ku_bnd+1,maxblockse), . tbedge_facey_x(nedges,il_bnd:iu_bnd+1,1:2, . kl_bnd:ku_bnd+1,maxblockse), . tbedge_facey_z(nedges,il_bnd:iu_bnd+1,1:2, . kl_bnd:ku_bnd+1,maxblockse), . tbedge_facez_x(nedges,il_bnd:iu_bnd+1,jl_bnd:ju_bnd+1, . 1:2,maxblockse), . tbedge_facez_y(nedges,il_bnd:iu_bnd+1,jl_bnd:ju_bnd+1, . 1:2,maxblockse) real tbedge_facex_y,tbedge_facex_z,tbedge_facey_x real tbedge_facey_z,tbedge_facez_x,tbedge_facez_y ! workspace arrays used for inter-block communications integer nbndmax parameter(nbndmax=max(nbndvar,nfluxes)) common/blockbnd/ . recvarx1(nbndmax,1:2,jl_bnd:ju_bnd,kl_bnd:ku_bnd) . ,recvary1(nbndmax,il_bnd:iu_bnd,1:2,kl_bnd:ku_bnd) . ,recvarz1(nbndmax,il_bnd:iu_bnd,jl_bnd:ju_bnd,1:2) . ,bndtempx1(nfluxes,1:2,jl_bnd:ju_bnd,kl_bnd:ku_bnd) . ,bndtempy1(nfluxes,il_bnd:iu_bnd,1:2,kl_bnd:ku_bnd) . ,bndtempz1(nfluxes,il_bnd:iu_bnd,jl_bnd:ju_bnd,1:2) real recvarx1,recvary1,recvarz1 real bndtempx1,bndtempy1,bndtempz1 ! parameters used in communication calls integer len_block_bndx,len_block_bndy,len_block_bndz parameter(len_block_bndx=2*ju_bnd*ku_bnd) parameter(len_block_bndy=2*iu_bnd*ku_bnd) parameter(len_block_bndz=2*iu_bnd*ju_bnd) integer len_block_ex,len_block_ey,len_block_ez parameter(len_block_ex=2*(ju_bnd+k2d)*(ku_bnd+k3d)) parameter(len_block_ey=2*(iu_bnd+1 )*(ku_bnd+k3d)) parameter(len_block_ez=2*(iu_bnd+1 )*(ju_bnd+k2d))