| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
|
|
|
| |
Avoid calling routine that swaps pointers to different timelevels if there
is only one timelevel active for a grid variable. This is an performance
improvement if there are a large number of grid variables (as in the case
of large vectors of grid variables).
Signed-off-by: Peter Diener <diener@cct.lsu.edu>
|
|
|
|
| |
Ensure requirements are met before restricting and syncing, not afterwards.
|
|
|
|
| |
Move requirement handling code out of Carpet and into a new thorn.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Change the API to obtain a pointer to grid function data:
- Use a function "typed_data_pointer" instead of overloading the ()
operator (because this looks nicer)
- Don't use a virtual function (because this isn't needed)
- Update all uses
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch provides a function interface for accelerator (GPU) devices
to be called at certain points when Carpet traverses the schedule
tree. This can be used to copy data between the host (CPU) and the
device (GPU) as it is needed.
---
Carpet/Carpet/interface.ccl | 28 ++++++++++++++++++++++++++++
Carpet/Carpet/param.ccl | 6 ++++++
Carpet/Carpet/src/CallFunction.cc | 12 ++++++++++++
Carpet/Carpet/src/Comm.cc | 8 ++++++++
Carpet/Carpet/src/Cycle.cc | 4 ++++
Carpet/Carpet/src/Evolve.cc | 2 ++
Carpet/Carpet/src/Initialise.cc | 2 ++
Carpet/Carpet/src/Requirements.cc | 34 ++++++++++++++++++++++------------
Carpet/Carpet/src/variables.cc | 3 +++
Carpet/Carpet/src/variables.hh | 3 +++
10 files changed, 90 insertions(+), 12 deletions(-)
|
|
|
|
|
|
|
|
| |
Specifically, remove any hierarchy information that has been added to
the name of timers, as well as any code for creating timers
dynamically, as these are now unnecessary. Additionally, time some
previously-untimed parts of the code and make timer names in some
places more consistent.
|
|
|
|
|
| |
Emit warnings about wrong number of time levels for prolongation only
for groups which have prolongation enabled.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Clean up cycling over time levels during initialisation, regridding,
poisoning etc.
|
|
|
|
| |
Ignore-this: 309b4dd613f4af2b84aa5d6743fdb6b3
|
|
|
|
| |
darcs-hash:20080219045359-dae7b-1af68020f9025b7527c42e5f647acbdb17e078ad.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Thorn InitBase specifies how initial data should be calculated. There
can be three possibilities:
init_some_levels: Set up at least one time level; other time levels
are scratch space
init_single_level: Set up exactly one time level; other time levels
are not acessed
init_all_levels: Set up all active time levels
Carpet checks this parameter and ensures that this setting is
consistent with Carpet's parameters
init_each_timelevel
init_fill_timelevels
init_3_timelevels
The new parameter init_fill_timelevels copies the current time level
into all past time levels, very similar to what
MoL::initial_data_is_crap does.
darcs-hash:20070706122545-dae7b-57ccca2954b1bd7ad98771e689c6c5b569c238cc.gz
|
|
|
|
|
|
|
| |
When enabling or disabling storage for grid arrays, update the
pointers in the cGH structure as well.
darcs-hash:20051010210525-891bb-a01898931d0c5a1af8d1ad22905bfa559eb6f1c5.gz
|
|
|
|
|
|
| |
Remove some superfluous assert statements.
darcs-hash:20051010210259-891bb-57c7fb73ea780382b562ac5cbd41f1c5b41d6c8a.gz
|
|
|
|
| |
darcs-hash:20050201214347-891bb-286c20316478d9f1c8384f94764174cab5adb9e0.gz
|
|
|
|
| |
darcs-hash:20050101162121-891bb-ac9d070faecc19f91b4b57389d3507bfc6c6e5ee.gz
|
|
|
|
| |
darcs-hash:20041225183030-891bb-f26f2712b7041a139d139fe8ba92db281c969e7e.gz
|
|
|
|
|
|
| |
Replace all CVS header tags with the standard "$Header:$".
darcs-hash:20040918132147-891bb-dea889bdd94a479ec412d14d08e9efca63e5c24d.gz
|
|
|
|
|
|
|
| |
Make Carpet ready for multiple patches.
Make the patch index available in a GH extension.
darcs-hash:20040521161623-07bb3-4f3148f677aff087d62828ed4b480fe8b412bc76.gz
|
|
|
|
| |
darcs-hash:20040422093722-07bb3-5ecb3344ca5fe2ac7b4eca38fdb7288e6d50a72b.gz
|
|
|
|
| |
darcs-hash:20040323183014-07bb3-4562b1a7b1dda25fbcccc7689c19bbd432b8a1ff.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Import the recently announced changes:
1. Carpet has now an infrastructure for multiple maps (aka "grid
patches"). Instead of a single grid hierarchy there can now be
several. This is largely untested, because the remainder of Cactus
cannot handle multiple coordinate systems.
2. The order in which the schedule bins are called has changed. As Ian
Hawke pointed out, the previous order during time evolution was
inconsistent. The initial data ordering did not allow for recovering
and was not usable for progressively solving elliptic equations for
initial data.
3. Carpet now supports convergence levels. The convergence level
specifies by how many factors of two the resolution in the parameter
file should be coarsened (or refined, if negative). This should make
convergence tests and test runs much easier. It is, in principle, also
possible to run several convergence levels at once. This has not been
tested because the remainder of Cactus cannot handle multiple
resolutions. This will be necessary for a multigrid solver, and also
for having a shadow hierarchy to determine where to refine adaptively.
4. Carpet works together with the new CoordBase domain specification
parameters. Without these, using convergence levels will lead to very
strange results.
5. The "modes" have changed. There are now:
meta mode: the whole simulation
global mode: one convergence level
level mode: one refinement level
singlemap mode: one map on one refinement level
local mode: as previously
The whole mode handling has been cleaned up.
6. The regridding thorn has been cleaned up.
7. The kind of prolongation stencil is now determined in Carpet, i.e. at
a fairly hight level, instead of in CarpetLib.
8. The low-order prolongation operators have been made much more
efficient (as have previously the higher-order ones).
9. Assorted smaller changes.
For Carpet users, there should be no major incompatibilities. The major
improvements are 3 and 4 combined. Here is an example:
CoordBase::domainsize = extent
CoordBase::spacing = gridspacing
CoordBase::zero_origin_x = yes
CoordBase::zero_origin_y = yes
CoordBase::zero_origin_z = yes
CoordBase::xextent = 20.0
CoordBase::yextent = 20.0
CoordBase::zextent = 20.0
CoordBase::dx = 1.0
CoordBase::dy = 1.0
CoordBase::dz = 1.0
CoordBase::boundary_shiftout_x_lower = 1
CoordBase::boundary_shiftout_y_lower = 1
CoordBase::boundary_shiftout_z_lower = 1
Carpet::domain_from_coordbase = yes
Carpet::convergence_level = 0
grid::type = coordbase
grid::domain = octant
grid::avoid_origin = no
This gives you a grid that extends from the origin ("zero_origin") up to
20.0 with a grid spacing of 1.0. Symmetry zones and boundary zones are
added automatically. The "shiftout" says that there is no boundary
point on the origin. The staggering parameters (not shown) default to
"no". In order to change the resolution, only the convergence level
has to be adjusted. Note that the old way of specifying the domain
extent still works.
For Carpet developers, one major change is the new mode handling. As
described in 5, the looping macros (that loop over all refinement
levels, or all components) have changed.
darcs-hash:20040125135727-07bb3-51c9647c1b5080e7e180b52a1b81fa155cfd19e9.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Many changes that accumulated while Cactus and Carpet diverged.
Add processor splitting mechanism "along-dir" that splits along a
specified direction.
Rename group PostRestrict to bin POSTRESTRICT.
Prolongate initial data only when desired. This saves much time.
Sorry, Ian.
Fix bug in time level cycling of grid arrays. (Note: grid arrays
should not have time levels.)
Fix time_t bug on IRIX.
Make sure that there is no integer overflow when there are many
refinement levels. Always put parentheses around
(maxreflevelfact/reflevelfact).
Fix typo in Carpet verbose output.
Add debug output in processor splitting.
Communicate in three stages: Irecv, (work), Isend, Wait. This might
be more efficient. Much more, potentially.
Fix bug in processor layout of grid arrays. Sorry, Ian.
Make the interpolator interpolate between time levels. Untested.
Fix bug in processor communication in interpolator. Sorry, Ian.
Rewrite prolongation operators to make them twice as fast. There you
are, Ian.
Move prolongation operator kind handling from data to gdata.
Add official hyperslabbing interfaces to CarpetSlab.
Adapt to new cGH * handling.
darcs-hash:20031105151837-07bb3-758a87ff0355dba053269df4b7d7d79bea018669.gz
|
|
|
|
|
|
|
|
| |
Do not include header files from other Carpet thorns directly.
Instead, use the "INCLUDES HEADER" and "USES INCLUDE HEADER"
mechanism.
darcs-hash:20030618162807-07bb3-a81444cde6c76e6a24516d108861fc1b5541c643.gz
|
|
|
|
|
|
|
|
|
|
| |
Handle empty groups.
Check for complex variables by testing the CCTK_REAL* macros.
set_component: when a component is not on the local processor, treat
it in the same way as in level mode.
darcs-hash:20030523215117-07bb3-56b046bfd26adfe416a5285b6feed8db8162ae13.gz
|
|
|
|
|
|
|
|
| |
Rearranged the three timelevel initialisation. It now happens later,
after the postinitial timebin. It is still not clear whether its
calling sequence of evol and poststep is consistent.
darcs-hash:20021116181049-07bb3-35ffbf63479365b4453a73ae6a25feff47d0757f.gz
|
|
|
|
| |
darcs-hash:20021024083937-07bb3-11e861873bf12a44fcadf075486608e6541c33de.gz
|
|
|
|
|
|
|
|
|
| |
(did nothing to file except added a space)
On previous check-in, I had added routines for flipping only certain time
levels and for copying data from the current time level to all previous
time levels
darcs-hash:20020718123218-e415b-cc918d8340421779342ba013bb4b0a25536f2dff.gz
|
|
|
|
| |
darcs-hash:20020718123044-e415b-c9e2ab9f69c32a3773cf372130979c79578ae4fc.gz
|
|
|
|
|
|
|
|
| |
Flip all timelevels instead of only the current one.
Add comments about what is left to do wrt. arrays when initialising 3 time
levels.
darcs-hash:20020606190456-07bb3-8bb306a0be588bcd19fe79ec5f46793210b58c29.gz
|
|
|
|
|
|
|
| |
Fixed bugs.
Added "flip timelevels" capability.
darcs-hash:20020606122015-07bb3-7eab2bcf55becde5136b2b9051c4133bd595b9bd.gz
|
|
|
|
|
|
|
|
|
| |
Arrays and scalars are now treated differently. There is now only one
instance of each scalar and array per processor (... and convergence
level). That means that all refinement levels and all grid components
share the same scalars and arrays.
darcs-hash:20020605222334-07bb3-469a6576637a8f90df31f2b23aa6779222910ca6.gz
|
|
|
|
| |
darcs-hash:20020326122225-07bb3-0c7746df97fb64f00918be1bee33191fb9d44b0b.gz
|
|
|
|
| |
darcs-hash:20011105165301-07bb3-7021e7a839dfd9970aad6ff46278b551dc5a239e.gz
|
|
|
|
| |
darcs-hash:20011102095857-07bb3-fa5851f740861e08b8780059f76c87121cea308e.gz
|
|
|
|
|
|
|
|
|
| |
Changed handling of scalars. Scalars are now zero-dimensional arrays.
Now handling CCTK_GroupDynamicData correctly.
Now using "include header".
Added results of test case.
darcs-hash:20010709070002-07bb3-ba0f4339acb8652e35a884fbdf7e8482b7236f8e.gz
|
|
|
|
|
|
|
|
| |
Broke the file "carpet.cc" into several files.
Simplified support for arrays with a dimension different from 3.
Added a testing thorn.
darcs-hash:20010704102946-07bb3-82132f0c643e91f0de33bbaef93f9c693ce7227f.gz
|
|
darcs-hash:20010301114010-f6438-12fb8a9ffcc80e86c0a97e37b5b0dae0dbc59b79.gz
|