Page 1 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) NNNNAAAAMMMMEEEE ddddoooo____ppppppppmmmmllllrrrr0000____2222ddddcccc____ggggaaaammmmmmmmaaaa - Given 1d strips of zone averages of density, pressure, and velocity defined on a uniform grid, new zone averages of these quantities are returned by advancing the Euler equations forward one timestep in the X direction. The full 2-dimensional update requires directional splitting by the calling program. FFFFOOOORRRRTTTTRRRRAAAANNNN SSSSPPPPEEEECCCCIIIIFFFFIIIICCCCAAAATTTTIIIIOOOONNNN ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ddddoooo____ppppppppmmmmllllrrrr0000____2222ddddcccc____ggggaaaammmmmmmmaaaa(((( XXXXLLLL,,,, RRRRHHHHOOOOZZZZBBBBBBBB,,,, RRRRHHHHOOOO,,,, RRRRHHHHOOOOZZZZTTTTTTTT,,,, PPPPZZZZBBBBBBBB,,,, PPPP,,,, PPPPZZZZTTTTTTTT,,,, UUUUZZZZBBBBBBBB,,,, UUUU,,,, UUUUZZZZTTTTTTTT,,,, UUUUTTTTZZZZBBBBBBBB,,,, UUUUTTTTZZZZBBBB,,,, UUUUTTTT,,,, UUUUTTTTZZZZTTTT,,,, UUUUTTTTZZZZTTTTTTTT,,,, RRRRHHHHOOOONNNNUUUU,,,, PPPPNNNNUUUU,,,, UUUUNNNNUUUU,,,, UUUUTTTTNNNNUUUU,,,, EEEEOOOOSSSSGGGGAAAAMMMM,,,, DDDDTTTT,,,, SSSSMMMMLLLLRRRRHHHHOOOO,,,, SSSSMMMMAAAALLLLLLLLPPPP,,,, SSSSMMMMAAAALLLLLLLLUUUU,,,, SSSSMMMMAAAALLLLLLLLEEEE,,,, CCCCOOOOUUUURRRRMMMMXXXX,,,, NNNNZZZZOOOONNNNEEEESSSS,,,, NNNNBBBBDDDDYYYY )))) rrrreeeeaaaallll****4444 XXXXLLLL((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY++++1111)))) rrrreeeeaaaallll****4444 RRRRHHHHOOOOZZZZBBBBBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 RRRRHHHHOOOO((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 RRRRHHHHOOOOZZZZTTTTTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 PPPPZZZZBBBBBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 PPPP((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 PPPPZZZZTTTTTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUZZZZBBBBBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUZZZZTTTTTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUTTTTZZZZBBBBBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUTTTTZZZZBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUTTTTZZZZTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUTTTTZZZZTTTTTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 RRRRHHHHOOOONNNNUUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 PPPPNNNNUUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUNNNNUUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 UUUUTTTTNNNNUUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****4444 EEEEOOOOSSSSGGGGAAAAMMMM,,,, DDDDTTTT,,,, SSSSMMMMLLLLRRRRHHHHOOOO,,,, SSSSMMMMAAAALLLLLLLLPPPP.... SSSSMMMMAAAALLLLLLLLUUUU,,,, SSSSMMMMAAAALLLLLLLLEEEE,,,, rrrreeeeaaaallll****4444 CCCCOOOOUUUURRRRMMMMXXXX iiiinnnntttteeeeggggeeeerrrr****4444 NNNNZZZZOOOONNNNEEEESSSS,,,, NNNNBBBBDDDDYYYY ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee dddd____ddddoooo____ppppppppmmmmllllrrrr0000____2222ddddcccc____ggggaaaammmmmmmmaaaa(((( XXXXLLLL,,,, RRRRHHHHOOOOZZZZBBBBBBBB,,,, RRRRHHHHOOOO,,,, RRRRHHHHOOOOZZZZTTTTTTTT,,,, PPPPZZZZBBBBBBBB,,,, PPPP,,,, PPPPZZZZTTTTTTTT,,,, UUUUZZZZBBBBBBBB,,,, UUUU,,,, UUUUZZZZTTTTTTTT,,,, UUUUTTTTZZZZBBBBBBBB,,,, UUUUTTTTZZZZBBBB,,,, UUUUTTTT,,,, UUUUTTTTZZZZTTTT,,,, UUUUTTTTZZZZTTTTTTTT,,,, RRRRHHHHOOOONNNNUUUU,,,, PPPPNNNNUUUU,,,, UUUUNNNNUUUU,,,, UUUUTTTTNNNNUUUU,,,, EEEEOOOOSSSSGGGGAAAAMMMM,,,, DDDDTTTT,,,, SSSSMMMMLLLLRRRRHHHHOOOO,,,, SSSSMMMMAAAALLLLLLLLPPPP,,,, SSSSMMMMAAAALLLLLLLLUUUU,,,, SSSSMMMMAAAALLLLLLLLEEEE,,,, CCCCOOOOUUUURRRRMMMMXXXX,,,, NNNNZZZZOOOONNNNEEEESSSS,,,, NNNNBBBBDDDDYYYY )))) rrrreeeeaaaallll****8888 XXXXLLLL((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY++++1111)))) rrrreeeeaaaallll****8888 RRRRHHHHOOOOZZZZBBBBBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 RRRRHHHHOOOO((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 RRRRHHHHOOOOZZZZTTTTTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 PPPPZZZZBBBBBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 PPPP((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 PPPPZZZZTTTTTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUZZZZBBBBBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) Page 1 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) rrrreeeeaaaallll****8888 UUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUZZZZTTTTTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUTTTTZZZZBBBBBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUTTTTZZZZBBBB((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUTTTTZZZZTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUTTTTZZZZTTTTTTTT((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 RRRRHHHHOOOONNNNUUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 PPPPNNNNUUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUNNNNUUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 UUUUTTTTNNNNUUUU((((1111----NNNNBBBBDDDDYYYY::::NNNNZZZZOOOONNNNEEEESSSS++++NNNNBBBBDDDDYYYY)))) rrrreeeeaaaallll****8888 EEEEOOOOSSSSGGGGAAAAMMMM,,,, DDDDTTTT,,,, SSSSMMMMLLLLRRRRHHHHOOOO,,,, SSSSMMMMAAAALLLLLLLLPPPP.... SSSSMMMMAAAALLLLLLLLUUUU,,,, SSSSMMMMAAAALLLLLLLLEEEE,,,, rrrreeeeaaaallll****8888 CCCCOOOOUUUURRRRMMMMXXXX iiiinnnntttteeeeggggeeeerrrr****4444 NNNNZZZZOOOONNNNEEEESSSS,,,, NNNNBBBBDDDDYYYY These two routines are functionally the same. They differ only in the type declarations of their (real) arguments (that is, single or double precision.) AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS XXXXLLLL [input] array of the locations of the lefthand zone interfaces. This defines the grid. Values on the range [1-NBDY, NZONES+NBDY+1] are required RRRRHHHHOOOOZZZZBBBBBBBB [input] array of zone averages of density, two rows below and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required RRRRHHHHOOOO [input] array of zone averages of density. Values on the range [1-NBDY, NZONES+NBDY] are required RRRRHHHHOOOOZZZZTTTTTTTT [input] array of zone averages of density, two rows above and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required PPPPZZZZBBBBBBBB [input] array of zone averages of pressure, two rows below and parallel to the row to be updated. Values on Page 2 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) the range [1-NBDY, NZONES+NBDY] are required PPPP [input] array of zone averages of pressure. Values on the range [1-NBDY, NZONES+NBDY] are required PPPPZZZZTTTTTTTT [input] array of zone averages of pressure, two rows above and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required UUUUZZZZBBBBBBBB [input] array of zone averages of longitudinal velocity, two rows below and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required UUUU [input] array of zone averages of longitudinal velocity. That is, the velocity, a vector quantity, is resolved into two orthogonal components, one parallel to the direction of the pass (longitudinal) and one perpendicular to the direction of the pass (transverse.) Values on the range [1-NBDY, NZONES+NBDY] are required UUUUZZZZTTTTTTTT [input] array of zone averages of longitudinal velocity, two rows above and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required UUUUTTTTZZZZBBBBBBBB [input] array of zone averages of transverse velocity, two rows below and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required UUUUTTTTZZZZBBBB [input] array of zone averages of transverse velocity, one row below and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required UUUUTTTT [input] array of zone averages of transverse velocity. Page 3 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) That is, the velocity, a vector quantity, is resolved into two orthogonal components, one parallel to the direction of the pass (longitudinal) and one perpendicular to the direction of the pass (transverse.) Values on the range [1-NBDY, NZONES+NBDY] are required UUUUTTTTZZZZTTTT [input] array of zone averages of transverse velocity, one row above and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required UUUUTTTTZZZZTTTTTTTT [input] array of zone averages of transverse velocity, two rows above and parallel to the row to be updated. Values on the range [1-NBDY, NZONES+NBDY] are required RRRRHHHHOOOONNNNUUUU [output] array of updated zone averages of density. Values on the range [1, NZONES] are computed PPPPNNNNUUUU [output] array of updated zone averages of pressure. Values on the range [1, NZONES] are computed UUUUNNNNUUUU [output] array of updated zone averages of longitudinal velocity. Values on the range [1, NZONES] are computed UUUUTTTTNNNNUUUU [output] array of updated zone averages of transverse velocity. Values on the range [1, NZONES] are computed EEEEOOOOSSSSGGGGAAAAMMMM [input] the ratio of specific heats. A gamma-law equation of state is used in which p(i)=(gamma- 1)*rho(i)*ei(i), with ei being the specific internal energy. Page 4 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) DDDDTTTT [input] the timestep. SSSSMMMMLLLLRRRRHHHHOOOO [input] This indicates what should be considered a trivial values of density. It is used to reduce the effects of roundoff errors. Reasonable values are 1.0e-06 for single precision and 1.0e-08 for double precision. SSSSMMMMAAAALLLLLLLLPPPP [input] This indicates what should be considered a trivial values of pressure. It is used to reduce the effects of roundoff errors. Reasonable values are 1.0e-06 for single precision and 1.0e-08 for double precision. SSSSMMMMAAAALLLLLLLLUUUU [input] This indicates what should be considered a trivial values of velocity. It is used to reduce the effects of roundoff errors. Reasonable values are 1.0e-06 for single precision and 1.0e-08 for double precision. SSSSMMMMAAAALLLLLLLLEEEE [input] This indicates what should be considered a trivial values of energy. It is used to reduce the effects of roundoff errors. Reasonable values are 1.0e-06 for single precision and 1.0e-08 for double precision. CCCCOOOOUUUURRRRMMMMXXXX [input] The maximum Courant number encountered during this call. The original value of COURMX is lost during the computation. The Courant number is a stability condition and should be less than one. NNNNZZZZOOOONNNNEEEESSSS [input] the array dimension, or number of zones to process, not counting boundary or ``fake'' zones. NNNNBBBBDDDDYYYY [input] the number of boundary of ``fake'' zones which have been set at each end of the 1d arrays to implement the users choice of boundary conditions. Page 5 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) This must be atleast 9. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN These routines are examples of one-dimensional hydrodynamics subroutines written a Lagrange plus remap style using elements from the PPMLIB library. This routine is suitable for two-dimensional problems when combined with the technique of Directional splitting. In the Lagrangian step, piecewise Parabolic interpolations are constructed for pressure and longitudinal velocity. Where the input data distribution is not well represented by parabolae or poorly resolved, (that is, the data are ``unsmooth''), monotonicity constraints are applied. Next, a Riemann solver is used to resolve these resultant discontinuities into time-averaged fluxes at the zone interfaces. These fluxes are differenced conservatively to provide new zone-averaged values of density, pressure (or energy), and velocity. The transverse velocity is unchanged at this point. At the beginning of the remap step, new piecewise Parabolic interpolations are constructed for pressure and longitudinal velocity, using the updated zone-averages from the Lagrangian step. Where the data are not well represented by parabolae or poorly resolved, (that is, the data are ``unsmooth''), monotonicity constraints are applied. Piecewise Parabolic interpolations are constructed for the density. Contact discontinuity detection is performed and where it is determined likely that a contact discontinuity exists, the density interpolations are modified to better represent discontinuities, rather than a smooth distribution. Monotonicity constrains are applied where the density data are deemed unsmooth. Next, regions of overlap between the Eulerian grid (the original grid) and the Lagrangian grid are found. The piecewise parabolic interpolations found above are integrated over these overlap regions to produce advection fluxes. These fluxes are differenced conservatively to provide new zone-averaged values of density, pressure (or energy), and longitudinal velocity. The transverse velocity is interpolated with monotonicity Page 6 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) constraints. These interpolations are integrated over the overlap regions and combined with the volume or mass fluxes found above, as appropriate, in construct the advected transverse momentum fluxes. These fluxes are then differenced conservatively producing new transverse velocity zone-averages. Finally, a diffusion step is applied. Shock detection is performed, so that the additional diffusion is applied only in those zone which require it. This includes strong shocks and certain pathological case such as a shock moving slowly through the numerical grid. In addition to the updated zone averages of density, pressure, and the velocities, an estimate of the Courant number is also returned to the calling program. In order for the method to be stable, the various Domains of Dependence for each zone interface may not exceed one zone in width. Nor may any wave travel more than one zone width during the timestep. During the remap step, stability requires that no more than one vone (volume or mass) may be advected across any interface during a single timestep. The two-dimensional Eulerian hydrodynamic equations may be approximated by applying this one-dimensional operator by applying directional-splitting to treat gradients in the x- and y-directions independently. An x-pass is performed first to compute the gradients in the x-direction by applying the one-dimensional operator to each row of the data domain. This is then followed by a y-pass in which the one-dimensional operator is applied to each column of the data domain, giving the y-direction gradients. If then applied again in reverse order, this symmetrized order of one-dimensional passes x-y-y-x provides second-order accuracy. A gamma law equation of state is assumed: p = ( gamma -1 ) * rho * ei where p is the pressure, rho is the density, ei is the internal energy, and gamma is the ratio of specific heats. Gamma is assumed to be constant and uniform. HHHHIIIINNNNTTTTSSSS +o The required problem boundary conditions may be enforced by setting appropriate zone-averaged values of the fake zones. Page 7 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) +o The timestep should be adjusted so that the Courant number (COURMX) remains less than 1.0. Because the actual Courant number encountered during a call is not known until after the call is completed, a common procedure is to adjust the new timestep so that the Courant number from the just completed call is <= 0.8. +o To maintain the second order accuracy, the timestep must not be varied between the pair of directional passes x-y and y-x. [[[[dddd____]]]]ddddoooo____ppppppppmmmmllllrrrr0000____1111ddddcccc. +o For an example of calls to the general Equation of state routines, see [[[[dddd____]]]]ddddoooo____ppppppppmmmmllllrrrr0000____1111ddddcccc. +o For an example of an non uniform grid see [[[[dddd____]]]]ddddoooo____ppppppppmmmmllllrrrr____1111ddddcccc____ggggaaaammmmmmmmaaaa. +o For examples of higher dimensions see [[[[dddd____]]]]ddddoooo____ppppppppmmmmllllrrrr0000____2222ddddcccc____ggggaaaammmmmmmmaaaa or [[[[dddd____]]]]ddddoooo____ppppppppmmmmllllrrrr0000____3333ddddcccc____ggggaaaammmmmmmmaaaa . BBBBUUUUGGGGSSSS +o SSSSEEEEEEEE AAAALLLLSSSSOOOO DO_PPMLR0_1DC, DO_PPMLR0_1DC_GAMMA, DO_PPMLR_1DC_GAMMA, DO_PPMLR0_3DC_GAMMA, FFFFIIIILLLLEEEESSSS ppm98_dfns.h ppm98_bdys.h BBBBUUUUGGGG RRRREEEEPPPPOOOORRRRTTTTSSSS TTTTOOOO ppmlib@sapphire.lcse.umn.edu AAAAUUUUTTTTHHHHOOOORRRRSSSS PPPPaaaauuuullll RRRR.... WWWWooooooooddddwwwwaaaarrrrdddd paul@lcse.umn.edu BBBB.... KKKKeeeevvvviiiinnnn EEEEddddggggaaaarrrr bke@lcse.umn.edu Department of Astronomy University of Minnesota Page 8 (printed 3/30/99) DDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999))))UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVVDDDDOOOO____PPPPPPPPMMMMLLLLRRRR0000____2222DDDDCCCC____GGGGAAAAMMMMMMMMAAAA((((JJJJaaaannnn 1111999999999999)))) Minneapolis, MN 55455 USA Page 9 (printed 3/30/99)