| Commit message (Collapse) | Author | Age |
|
|
|
| |
Replace calls to abs() with floating arguments by calls to fabs(), to ensure the results are not accidentally truncated to integer.
|
|
|
|
| |
Add infrastructure to prolongate faces of grid functions. This may be used during refluxing to apply part of the correction to the fine grid.
|
|\ |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Re-organise some of the internal details of refluxing. Refluxing
requires restricting fluxes from fine to coarse grids. Previously,
Carpet would internally store bounding boxes that were offset by 1/2
grid point, and adjust (correct) these boxes in various places in a
rather ad-hoc manner. This is now cleaned up.
Remove the (unused) "accumulate" operator, and the (unused)
"accumulate" prolongation type.
|
|/ |
|
|
|
|
|
|
|
| |
Extend API of grid operators and of gdata::copy_from,
gdata::transfer_from to allow hyperslabbing
Implement hyperslabbing in copy_3d.cc
|
|
|
|
|
|
|
| |
During regridding, there are two sets of component indices and process
numbers, namely those of the old and of the new grid structure.
Previously, Carpet would erroneously always use those of the new grid
structure; this fails when the number of components changes.
|
| |
|
|
|
|
|
|
| |
Add a new transport operator "accumulate", which accumulates ghost
zones into grid functions. (This is in a sense the opposite of regular
synchronisation, which copies grid function values into ghost zones.)
|
| |
|
|
|
|
| |
Correct indices.
|
| |
|
|
|
|
|
|
|
| |
- Add new entries for the CarpetRegrid mask and for refluxing
- Rename dboxes to light_dboxes.
- Add local_dboxes with more information about the process-local part of
the grid hierarchy.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Store the current Cactus time (and not a fake Carpet time) in the th
"time hiearchy". This removes the now redundant "leveltimes" data
structure in Carpet.
Add past time levels to th, so that it can store the time for past
time levels instead of assuming the time step size is constant. This
allows changing the time step size during evolution.
Share the time hierarchy between all maps, instead of having one time
hierarchy per map.
Simplify the time level cycling and time stepping code used during
evolution.
Improve structure of the code that loops over time levels for certain
schedule bins. Introduce a new Carpet variable "timelevel", similar
to "reflevel".
This also makes it possible to avoid time interpolation for the past
time levels during regridding. The past time levels of the fine grid
then remain aligned (in time) with the past time levels of the coarse
grid. This is controlled by a new parameter
"time_interpolation_during_regridding", which defaults to "yes" for
backwards compatibility.
Simplify the three time level initialisation. Instead of initialising
all three time levels by taking altogether three time steps (forwards
and backwards), initialise only one past time level by taking one time
step backwards. The remaining time level is initialised during the
first time step of the evolution, which begins by cycling time levels,
which drops the non-initialised last time level anyway.
Update Carpet and the mode handling correspondingly.
Update the CarpetIOHDF5 checkpoint format correspondingly.
Update CarpetInterp, CarpetReduce, and CarpetRegrid2 correspondingly.
Update CarpetJacobi and CarpetMG correspondingly.
|
| |
|
|
|
|
|
| |
Allow different numbers of ghost zones and different spatial
prolongation orders on different refinement levels.
|
| |
|
| |
|
|
|
|
| |
Ignore-this: 309b4dd613f4af2b84aa5d6743fdb6b3
|
| |
|
|
|
|
|
|
|
|
|
| |
Introduce a tree data structure "fulltree", which decomposes a single,
rectangular region into a tree of non-overlapping, rectangular sub-regions.
Move the processor decomposition from the regridding thorns into Carpet.
Create such trees during processor decomposition.
Store these trees with the grid hierarchy.
|
|
|
|
|
|
|
| |
Splite the grid hierarchy and communication schedule into two separate
data structures.
Correct error in determining the processor owning a certain region when
calculating the communication schedule.
|
|
|
|
|
|
|
|
|
| |
Rename cycle, flip, and fill to cycle_all, flip_all, and fill_all,
respecively, in the ggf class. Remove the c ("component") argument.
Instead, loop over all components. This mirror earlier changes to
sync etc.
darcs-hash:20080219045150-dae7b-f2198d253aac5b62d247a51155a08c3739daa720.gz
|
|
|
|
| |
darcs-hash:20080219045115-dae7b-b098e7d4835a115ea87fc0ed656ba87f803a368b.gz
|
|
|
|
|
|
|
| |
Add an overloaded function memoryof which measures the size in bytes
of CarpetLib's data structures.
darcs-hash:20080202154302-dae7b-de41c79cb04617327695fae27928c05c5d431ee8.gz
|
|
|
|
|
|
|
| |
Remove the declarations and definitions of old-style communication
routines.
darcs-hash:20080130221457-dae7b-1d759b545bf0e56273f6c7ba3aeb628fa9ade7ef.gz
|
|
|
|
|
|
|
|
|
| |
Rename the datatypes pseudoregion and sendrecv_pseudoregion to
pseudoregion_t and sendrecv_pseudoregion_t, respectively. Move their
declaration and definition to region.hh and region.cc, respectively.
Instantiate templates for stream output.
darcs-hash:20080130221653-dae7b-8eb25cacc8f7750ac470179c9575785bdb32b575.gz
|
|
|
|
| |
darcs-hash:20080129044555-dae7b-74b17623c5239e72cfb5e82b305604ee694daba8.gz
|
|
|
|
|
|
|
|
|
|
| |
Store the communication schedule more efficiently: store only the
non-zero parts. This saves much time when traversing the schedule.
Add new communication routines which communicate not between only two
individual components, but between all components.
darcs-hash:20080114152229-dae7b-7b7ba51bd8b5de0a0009ea236f4a894667b0281b.gz
|
|
|
|
|
|
|
|
|
| |
Add a new function ggf::fill, which fills all time levels from the
current time level.
Remove the function ggf::copy, which was unused.
darcs-hash:20080114151255-dae7b-469b57d0393ba0ed22590c2eabe862e02702fde7.gz
|
|
|
|
| |
darcs-hash:20071102224528-dae7b-b8ecec8895cd86f40ed667db5db2c4b79ba8b237.gz
|
|
|
|
|
|
|
|
|
|
| |
Sync 1-tl and prolongation=none GFs
Fix a little bug that prevented the synchronization of
GFs that have only 1 timelevel or have prolongation
turned off explicitely (tag 'prolongation=none').
darcs-hash:20070720053350-fff0f-dd8b80ecbb76ff7f3347ce3a906e537f7e0fd128.gz
|
|
|
|
| |
darcs-hash:20070513034420-dae7b-7261b7a902bf7ac39a2c73bd6d762e67e37c9110.gz
|
|
|
|
|
|
| |
Use the correct time when interpolating while regridding.
darcs-hash:20070513034335-dae7b-df3960395af6cd7a8fb75ceb7bb6b6513933bcf2.gz
|
|
|
|
|
|
| |
Update to use new communication mechanism.
darcs-hash:20070419014851-dae7b-313adb8952e62048a096bba95023c99be48e9658.gz
|
|
|
|
|
|
|
| |
Regridding when the previous grid hierarchy had fewer levels was not
handled correctly.
darcs-hash:20070312161246-dae7b-f9bdb2990fcbd1bc9f245aaef35398b1a25b60d3.gz
|
|
|
|
|
|
|
|
|
|
|
|
| |
Calculate the communication schedule for recomposing in advance. This
is the schedule which decides which parts of the old grid hierarchy
are used to fill what parts of the new grid hierarchy. Previously,
this schedule was calculate for every grid function anew.
Omit synchronisation and boundary prolongation after recomposing.
This must now happen by scheduled routines in the postregrid bin.
darcs-hash:20070307231156-dae7b-a9fc9a40a88dc7c5b459de8118fc3d4b6c66ffac.gz
|
|
|
|
|
|
|
| |
Change static_assert to have a second arguments, which is supposed to
be a string containing a description of the test.
darcs-hash:20070228022658-dae7b-3fb68ea0e0f557f2268cb95546ba0d70c58cda7a.gz
|
|
|
|
| |
darcs-hash:20070204192032-dae7b-10c06e6529291abe5a3dda8ae1d0022a23837ac3.gz
|
|
|
|
| |
darcs-hash:20070204191934-dae7b-8428cc85656d5eb92580f82165ef134c72fc98c9.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A pseudoregion is almost a region; it is a bbox that lives on a
certain processor. Pseudoregions are a compact way to store
information about what processors needs to send data to what other
processor during synchronisation or regridding.
Introduce a class pseudoregion. Add additional pseudoregion fields to
the dh class. Use these fields when communicating; this is faster
than walking the original data structures.
darcs-hash:20070204184339-dae7b-3bd90a48b77cf0623e3df3a7ca4edd9d5c7053f8.gz
|
|
|
|
|
|
|
| |
Rename ggf::recompose_free to ggf::recompose_free_old.
Remove code that was commented out.
darcs-hash:20070204180937-dae7b-0c0c9f5b5007d416ec16da8a6781950a4f1406e5.gz
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement a second timer based on Intel's rdtsc instruction, which is
much faster and much more accurate than MPI_Wtime.
Place the timer classes into the CarpetLib namespace.
Create a TimerSet class. Make the Timer class automatically register
all timers with a singleton object, removing all global variables.
darcs-hash:20070203211128-dae7b-42765e79446eda6a2337ba22cd390869055c555a.gz
|
|
|
|
|
|
|
|
| |
Define a macro AT() to index into std::vector. Depending on the macro
NDEBUG, AT() is defined either as at(), providing index checking, or
as operator[], providing no checking.
darcs-hash:20070203205854-dae7b-a1999c88c95ba12b1ee66505f712aefdd67d7e6f.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The new datatype region_t combines an extent (a bbox), an outer
boundary descriptor, a refinement descriptor, and a processor number:
struct region_t {
ibbox extent; // extent
b2vect outer_boundaries; // outer boundaries
b2vect refinement_boundaries; // refinement boundaries
int map; // map to which this
// region belongs
int processor; // processor number
};
These quantities are often used together, and combining them into a
single datatype simplifies the code significantly.
Adapt gh, dh, etc. to use this new datatype.
This is a major API change.
darcs-hash:20070112204130-dae7b-92cad546187b0fe499e8cfc38b2e26614a4f608c.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Split recompose functions into two stages, regrid and recompose. The
first stage, regrid, changes the grid structure in the gh and dh
classes. The second stage, recompose, changes the values of the
actual grid functions, i.e., changes the gf<T> and data<T> objects.
The second stage has to be called individually for every refinement
level.
This is necessary since the boundary conditions need to be applied
after recomposing one refinement level, before the next fine
refinement level can be recomposed.
darcs-hash:20060904230433-dae7b-3ba1982460f57b34da11a6fbb6b4b524dc5b348f.gz
|
|
|
|
| |
darcs-hash:20060731151456-dae7b-3f905340dc34295d2e00fe58995ebc5b4d6690f7.gz
|
|
|
|
|
|
|
|
| |
Store the number of active time levels per refinement level, not
globally, because each refinement level can have a different number of
active time levels.
darcs-hash:20060413192655-dae7b-be12d1baef21b3f0a24bbb022297a4856c7d6f14.gz
|
|
|
|
|
|
|
|
|
| |
CarpetLib's comm_state class (actually, it's still just a struct) has been
extended to handle collective buffer communications for all possible C datatypes
at the same time. This makes it unnecessary for the higher-level communication
routines to loop over each individual datatype separately.
darcs-hash:20050815150023-776a0-dddc1aca7ccaebae872f9f451b2c3595cd951fed.gz
|
|
|
|
|
|
|
|
| |
For each refinement level that is to be recomposed, check whether it
has the same structure as before, and if so, do nothing. This is
controlled by a new flag CarpetLib::fast_recomposing.
darcs-hash:20050811120347-891bb-f937c21ddeac7d909cae41d487e9fd74a5ce8cc8.gz
|