wiki:DomainDataExplained

Version 8 (modified by trac, 12 years ago) ( diff )

Back to AstroBearIntro

The domain.data file


The most important of AstroBEAR's data files, domain.data controls the boundaries of the system and the computational methods used to evolve it. The file is split into a series of namelists as follows:

  • GlobalData (Contains global parameters related to the run like the number of dimensions, number of subdomains, length of simulation etc…)
  • EllipticData (Contains global parameters related to any elliptic equations that need to be solved)
  • DomainData (Contains information about the first subdomain like the physical location, number of refinement levels, type of hydro scheme etc…)
    • MUSCLData (Contains method flags for domains that use the MUSCL hydro scheme. Only necessary if the previous subdomain is using the MUSCL scheme)
    • SweepData (Same as above, but for the Sweep Scheme)
    • WaveData (Same as above, but for the Wave Scheme)
  • DomainData (Contains information about the second subdomain if necessary…)
    • MUSCLData
    • SweepData
    • WaveData
  • DomainData (for the third subdomain and so on…)

See a sample domain.data file

contrib/astro/sample_data_files/domain.data

GlobalData == Contains global parameters for the entire simulation domain including the number of sub-domains.

  • nDomains: ! number of distinct sub-domains
  • nDim: The number of dimensions in the grid (for AstroBEAR, this means the number of dimensions for the problem). This value should be between 1 and 4.
  • Restart: Set to T if the simulation is to be restarted from an existing frame, and F if it is to start from scratch.
  • RestartFromBOV: Set to T if the simulation is to be restarted from a fixed grid brick of values (BOV), and F otherwise.
  • RestartRevision: The code SVN revision which you are restarting from. Code revisions which change the size of the Info structure need this to be set in order to correctly read in the Info*.bin files.

  • NewMinLevel: Integer that sets the level of minimum refinement. AstroBear will stop updating grids with level < NewMinLevel. See NewMinLevel.
  • CoarsenRatio: The coarsening ratios used by each level of refinement. There should be at least MaxLevel elements in this array; any elements beyond MaxLevel are ignored.
  • LogOpt: Run Log options - It is recommended that you not tamper with these unless the number of elements in this array is less than MaxLevel, at which point you should just add as many 000 elements as necessary.
  • MinimumGridPoints: Only the first nDim of these values matter; they indicate the minimum number of points in a given dimension that the grids should have. *Side note* Something extra special about our code: There must be at least MaxLevel-1 of these values for the simulation to run.
  • MaxCFLRetry Maximum number of times to reduce dt such that CFL <= cflv(1) before giving up.
  • out_style As of version r439: Set = 0 for Chombo HDF5 output, or = 1 for BOV (brick of values) output.
  • out_frames: The number of frames that the simulation should produce. This should be an integer greater than 0.
  • TimeStepMethod: Set this parameter to 0 if you want the timestep to be fixed, and to 1 if you want it to be variable. As of r433, for new AMR, set = 2 for fixed timestep and = 3 for variable timestep
  • StartTime: The initial time. We always set it to 0.
  • FinalTime: The final time ( = # years / RunTimeSc(in yrs) )
  • LevelEqSets: Set to T if different equations are solved on each level, and F otherwise. This is always set to F for us.
  • LevelMethods: Set to T if different integration schemes are used on each level, and F otherwise. This is always set to F for us.
  • RestartFrame: Sets the frame from which the simulation will restart (assuming Restart is set to T). If RestartFrame is set to 0, then the simulation will restart from the last completed frame.
  • WriteFrameAtSpecifiedTime: When set to T, this forces AstroBEAR to generate an output file at a specific time. This can throw the CFL number out of whack, though, as the timestep is adjusted to finish the step by the output time. Setting this parameter to F disables forced outputs at specific times.
  • MaintainAuxArrays: It is currently read in as the MaintainAuxArrays flag. When set to T, this instructs AstroBEAR to keep track of edge-valued magnetic fields in the aux array.
  • lSink_Particles: This tag enables the code that tracks and maintains sink particles in AstroBEAR. If you are not using sink particles, you will want this to be false as sink particles carry some overhead with them.
  • NrTracerVars: Number of Tracer Variables to be used. Normally set to 0 unless you want to track a particular part of the fluid.
  • dtv(1): Initial dt (used in all steps if method(1) = 0)
  • dtv(2): Max allowable dt
  • cflv(1): A floating point value representing the maximum allowable CFL number. This generally should not exceed 1.0.
  • cflv(2): A floating point value representing the desired CFL number. AstroBEAR uses this value when deciding by how much to adjust the timestep.
  • cflv(3): A floating point value representing the CFL relaxation parameter. AstroBEAR uses this value to control the rate at which a grid's current CFL number approaches the desired value (cflv(2)).
  • lRootGridAdapt: Logical flag that enables the root grids to change size to try and balance the root grid distribution more evenly.
  • lDistribute: Logical flag that allows child grids to be moved off of their parents processor. Should be true for most situations.
  • DistributeMethod: Integer flag that determines how grids are distributed between processors. 0 redistrubutes somewhat blindly, just trying to balance the total work load on each processor. 1 tries to balance the work load as well, but also tries to minimize communication - more likely to keep data from a physical location on the same processor. 2 is the same as 1, but if there are multiple sub-domains, each sub-domain redistributes only within processors assigned to that sub-domain. (1 and 2 are somewhat experimental but seem to improve performance)

EllipticData

  • NrEllipticVars An integer giving the number of elliptic variables — actually, the number of non-hyperbolic step, non-protecting, non-source integration variables. If nonzero, these will be the last integers in q, starting at nEllipticLO and going to NrVars (where NrVars=NrHydroVars+NrEllipticVars).
  • EllipticMethod: Method to use for elliptic solves. 1 = Hypre self-gravity (can be periodic or non-periodic, but reflecting is not considered), 5 = FFTW self-gravity (always a periodic calculation of gravity. NOTE: ONLY WORKS WITH SWEEP METHOD - iScheme=1)

DomainData

  • MaxLevel Indicates the maximum level of AMR refinement to use. MaxLevel = 2 and MaxLevel = 3 are good starting points if you're not sure how much refinement you'll need.
  • iBuffer: The size in cells of the buffer zones to be created around each refinement area. This array should always have at least nDim elements.
  • InterpOpt: An integer array representing the interpolation option used to derive dq on each level. There should be at least MaxLevel elements in this array. The options are as follows:
    • -1 = centered: Takes the average of dqbackward and dqforward.
    • 0 = constant: Uses a constant option for dq.
    • 1 = minimod: Takes the minimum between a forward-step dq and a backward-step dq.
    • 2 = superbee: Uses a constant option for dq.
    • 3 = vanleer: Always uses the backward-step dq.
    • 4 = monotonized-centered: Always uses the forward-step dq.

Also see InterpOpt.

  • ErrorFlagOpt: An array of two-digit numbers indicating which error flag method to use for each level. See NodeInfoGlobal.f90 for more details on the values that go here. Make sure that there are at least MaxLevel entries here, as there needs to be an option for each level.
  • DesiredFillRatios: DesiredFillRatios in determining a new subgrid. Should be MaxLevel of these. (should probably be .9 or .99)
  • qTolerance: An array of tolerance values for the field variables. There should never be less than MaxLevel values in this array.
  • xTolerance: These values are intended for problems that change the shape of the cells themselves; as such, we don't typically touch them. Just make sure that there's at least MaxLevel values in this array.
  • DomainDecomposition: The number of subdomains into which each dimension should be decomposed. This integer array should have between 1 and 4 elements, and the number of elements should always be at least nDim.
  • Xlower: Lower physical coordinates of this subdomain (1:nDim)
  • Xupper: Upper physical coordinates of this subdomain (1:nDim)
  • mX: Number of cells in this subdomain (1:nDim)
  • mthbc(n): There will be two mthbc records for each dimension, with each one containing an integer flag indicating the kind of boundary conditions along that edge of the grid (1 = extrapolated boundary conditions, 2 = periodic boundary conditions, 3 = reflecting (solid wall) boundary conditions. By version r433, 3 is for magnetic fields forced to be parallel to the boundary, and option 4 has been added for a reflecting boundary with magnetic fields forced to be normal to the boundary. A value of 999 = internal boundary conditions). These values will be read into the root node and propagated to the child [Node nodes] as they are created.
    • mthbc(1): type of boundary conditions at left
    • mthbc(2): type of boundary conditions at right
    • mthbc(3): type of boundary conditions at bottom
    • mthbc(4): type of boundary conditions at top
    • mthbc(5): type of boundary conditions at front
    • mthbc(6): type of boundary conditions at back
  • decomposeMethod: Integer flag that determines how root grids are decomposed. 0 does an ordered decomposition given by the decomposition below. 1 decomposes the problem domain into the same number of root grids as there are processors by a bisection method.
  • decomposition: Number of sections to decompose the domain into in each direction. There should be nDim of these and normally product(decomposition) = # of processors
  • iScheme: Integer flag that determines which hydro engine to use. 0 selects MUSCLbear which performs updates on a 1D array at a time. 1 selects SWEEPBear which performs updates on the entire grid at a time (able to do multidimensional stencils like CTU). 2 is WaveBEAR but is not yet supported

MUSCLdata === (Only needed if iScheme is 0)

  • method(1): Unused
  • method(2): Selects the spatial interpolation scheme to use. A detailed description of of AstroBEAR integrations can be found here. Options are:
    • 0: First order Gudonov method.
    • 1: MUSCL primitive interpolation.
    • 2: MUSCL wave-by-wave interpolation.
    • 3: Piecewise Parabolic Method (PPM). If you choose this option, make sure that method(4) == 3
    • 4: Piecewise Hyperbolic Method (PHM).
  • method(3): Setting this flag to 1 enables direction splitting (see the integration scheme page for further details), while setting the flag to 0 disables it.
  • method(4): Selects the temporal interpolation scheme. A detailed description of of AstroBEAR integrations can be found here. Options are:
    • 0: First order Gudonov method. (Not mentioned in current incarnation of bear.data)
    • 1: MUSCL-Hancock predictor-corrector method.
    • 2: TVD-preserving Runge-Kutta method.
    • 3: Piecewise Parabolic Method (PPM).
    • 4: Linear characteristic tracing.
  • method(5): Controls whether or not to use Strang splitting. Options are:
    • 0: No source terms.
    • 1: Use the full time step.
    • 2: Use Strang splitting.
  • method(6): Selects the flux handling method. Again, a more detailed description can be found here. Options are:
    • 0: Roe Flux.
    • 1: Adapted Marquina Flux.
    • 2: Marquina Flux (hydro-only).
    • 3: HLLD Riemann solver (MHD only).
  • method(7): This option is not typically used in an AstroBEAR simulation and should remain set to 0.

WAVEdata

SWEEPdata

  • method(1): Unused
  • method(2): Selects the spatial interpolation scheme to use. A detailed description of of AstroBEAR integrations can be found here. Options are:
    • 0: First order Gudonov method.
    • 1: Piecewise Parabolic Method (PPM)
  • method(3): Unused
  • method(4): Selects the temporal interpolation scheme. A detailed description of of AstroBEAR integrations can be found here. Options are:
    • 0: First order Gudonov method. (Not mentioned in current incarnation of bear.data)
    • 1: Piecewise Parabolic Method (PPM).
  • method(5): Controls whether or not to use Strang splitting. Options are:
    • 0: No source terms.
    • 2: Use Strang splitting.
  • method(6): Selects the flux handling method. Again, a more detailed description can be found here. Options are:
    • 0: Use the appropriate HLLC solver for Hydro/MHD and isothermal/ideal EOS.
    • 1: Exact Riemann Solver
    • 2: HLLC (ideal hydro only)
    • 3: HLL (ideal hydro only)
    • 4: HLLC_ISO (isothermal hydro only)
    • 6: HLLD (ideal MHD only)
    • 8: HLLD_ISO (isothermal MHD only)
  • method(7): Unused
Note: See TracWiki for help on using the wiki.