| Commit message (Collapse) | Author | Age |
|
|
|
| |
This tag indicates that this variable group should have storage only on map 0.
|
| |
|
| |
|
|
|
|
|
|
|
| |
from void to int to make Carpet compile again.
* actually return return values from these functions
to make Carpet work again.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Ignore-this: 309b4dd613f4af2b84aa5d6743fdb6b3
|
| |
|
| |
|
|
|
|
|
| |
Requirements and provisions are a planned feature to simplify Cactus
schedules. Scheduled routines can require and provide "things". It is an
error if something is required which has not been provided before.
|
|
|
|
|
|
| |
Add a new parameter Carpet::refine_timestep which automatically adjusts
the time step size according to the give spatial and temporal refinement
factors, so that the specified CFL factor Time::dtfac is satisfied on all
refinement levels.
|
|
|
|
|
|
| |
Schedule wrappers are routines that can be registered with Carpet. They
will be called before and after any scheduled routine is called. This
allows custom debugging and profiling routines, such as e.g. single-stepping
through the schedule.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
darcs-hash:20070530231304-dae7b-92daf312e23db8a74d1e9e4cd829b3f2fc41f843.gz
|
|
|
|
|
|
|
|
|
| |
Restructure and clean up Recompose.cc.
Regridding now consists of two steps, first calling Recompose once,
then calling Regrid on each refinement level.
darcs-hash:20060925213242-dae7b-c72f88f966e9ccbf1c43f89c207af15cff535b69.gz
|
|
|
|
|
|
|
|
|
| |
Poison grid arrays (and grid scalars) before the wragh bin. Poison
grid functions before the basegrid bin.
Also poison before recovering.
darcs-hash:20060802155840-dae7b-663fe065e3196ebcc53d15c48572fa938008b7a3.gz
|
|
|
|
| |
darcs-hash:20060606211706-dae7b-76111e6026cc3248d96ac45db843d7b2fd325f95.gz
|
|
|
|
|
|
|
|
| |
Split Carpet's startup into the multi-model startup and the regular
driver startup. The multi-model startup happens earlier and
essentially only splits the MPI communicator.
darcs-hash:20051119211930-dae7b-2b9da823988adf70ad755af9e43cc86a8e87e1c1.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
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In one of my previous patches I accidentally added two bugs when optimising
the high-level synchronisation routines in Carpet:
* a SYNC statement did only synchronise the ghostzones
but forgot to prolongate the boundaries for grid functions
* SyncGroups() also tried to synchronise non-CCTK_GF variables
at multigrid and refinement levels other than 0
darcs-hash:20050407150044-776a0-46b495efd5b68ab401ad00c5ac705f786069022c.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Collective buffers are used to gather all components' data on a processor
before it gets send off to other processors in one go. This minimizes the
number of outstanding MPI communications down to O(N-1) and thus improves
overall efficiency as benchmarks show.
Each processor allocates a pair of single send/recv buffers to communicate
with all other processors. For this the class (actually, the struct) comm_state
was extended by 3 more states:
state_get_buffer_sizes: accumulates the sizes for the send/recv buffers
state_fill_send_buffers: gathers all the data into the send buffers
state_empty_recv_buffers: copies the data from the recv buffer back into
the processor's components
Send/recv buffers are exchanged during state_fill_send_buffers and
state_empty_recv_buffers. The constructor for a comm_state struct now takes
an argument <datatype> which denotes the CCTK datatype to use for the
attached collective buffers. If a negative value is passed here then it falls
back to using the old send/recv/wait communication scheme. The datatype
argument has a default value of -1 to maintain backwards compatibility to
existing code (which therefore will keep using the old scheme).
The new communication scheme is chosen by setting the parameter
CarpetLib::use_collective_communication_buffers to "yes". It defaults to "no"
meaning that the old send/recv/wait scheme is still used.
So far all the comm_state objects in the higher-level routines in thorn Carpet
(restriction/prolongation, regridding, synchronization) have been enabled to
use collective communication buffers.
Other thorns (CarpetInterp, CarpetIO*, CarpetSlab) will follow in separate
commits.
darcs-hash:20050330152811-776a0-51f426887fea099d1a67b42bd79e4f786979ba91.gz
|
|
|
|
|
|
| |
into SyncGVGroup()
darcs-hash:20050316140925-3fd61-fd64d2290d26975fa5521f57f0d83442d5af7feb.gz
|
|
|
|
| |
darcs-hash:20050316123248-3fd61-b9695858d99c5d6dc769c0b4e1db3c50c9e5032a.gz
|
|
|
|
| |
darcs-hash:20050101162121-891bb-ac9d070faecc19f91b4b57389d3507bfc6c6e5ee.gz
|
|
|
|
|
|
| |
Replace all CVS header tags with the standard "$Header:$".
darcs-hash:20040918132147-891bb-dea889bdd94a479ec412d14d08e9efca63e5c24d.gz
|
|
|
|
|
|
|
|
|
|
| |
Re-introduce a "force" argument to Carpet::Regrid. This argument is
passed on to the aliased function Carpet_Regrid, and in the end forces
recomposing the grid hierarchy.
Use it during recovery.
darcs-hash:20040819133820-07bb3-14f93e463e4b503992cc8e243eab2c485331c87c.gz
|
|
|
|
|
|
|
|
|
|
|
| |
Re-introduce the parameter Carpet::prolongate_initial_data with the
default "yes". If set to "no", newly created refinement levels are
not initialised through prolongation, which saves quite some time.
Remove the unused optional argument checkpoing_recovery from
Carpet::Regrid.
darcs-hash:20040807174712-07bb3-78054ad80959a2e26238531d9ea54eaac161ffce.gz
|
|
|
|
|
|
|
| |
Make Regrid return a flag whether it changed the grid hierarchy. This
can be used to call the postregrid bin only when things changed.
darcs-hash:20040621102859-07bb3-8f6dd27a142f970982232ea008a89ce0bf9880f8.gz
|
|
|
|
|
|
| |
behaviour under recovery situations. The default is false.
darcs-hash:20040602051122-5b8bb-626da2ff2833f25e7fb9624ecb1afc282d12d154.gz
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove the parameters Carpet::prolongate_initial_data; this is now
always done.
Remove arguments initialise_from and do_prolongate from Regrid().
Regridding is now done in level mode instead of meta mode.
Furthermore, CarpetRegrid is called in singlemape mode.
darcs-hash:20040418112943-07bb3-2e392df1737ab75f3f0d553bb53bde2ed41f8773.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
|
|
|
|
|
|
|
| |
Make checksumming and poisoning work again.
Modify Scott's three timelevel scheme to work again.
darcs-hash:20030810195951-07bb3-b9e99cfe4858b00978f925172c062abd4524a1ba.gz
|
|
|
|
|
|
|
| |
Declare some more routines as taking a const cGH *, to match the
recent changes in the flesh.
darcs-hash:20030714134134-07bb3-6c0078627d40a9d05320632feba2277afdd33bdf.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
|
|
|
|
| |
darcs-hash:20030502122231-07bb3-854522265e6ab9d57d3b24ba5af3437af07a3bc6.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:20020901125223-07bb3-f494618480c1ffc46118365c4c957d7a313d7be9.gz
|
|
|
|
|
|
|
|
| |
Removed file-scope static function declarations in CarpetIOASCII,
because a modern IBM C++ compiler had problems with this deprecated
feature of C++. Using a namespace instead.
darcs-hash:20020830160852-07bb3-23b772154bffa09c2c36df6ec55c56aaf6669db6.gz
|
|
|
|
| |
darcs-hash:20020718123247-e415b-256f912c2b87a6a6166a6df40d0e143716e11e44.gz
|
|
|
|
|
|
|
| |
Fixed bugs.
Added "flip timelevels" capability.
darcs-hash:20020606122015-07bb3-7eab2bcf55becde5136b2b9051c4133bd595b9bd.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Added stream input routines for some CarpetLib containers.
The regridder now has to explicitly say which boundaries are outer,
and which are internal. This will make outer boundaries on fine grid
possible, and is also necessary when there are multiple grid patches.
Started to add support for arbitrariliy many user-specified refinement
regions. Not yet finished.
The Carpet driver can now handle multiple grid patches.
Added example files for multiple grid patches. They use initial data
that does not "fit" the boundary conditions, and they don't use
multiple refinement levels so far.
Removed old and unused example files in CarpetLib.
darcs-hash:20020311121709-07bb3-18594c42bd7a958ee0840d29e158a343208f5711.gz
|
|
|
|
|
|
|
|
| |
Restructured regridding. Instead of registering the new grid
structure every time you want to regrid, you register a routine that
is called every time it is possible to regrid. This is much cleaner.
darcs-hash:20020111161945-07bb3-a03d269b8a81c5cc3e7196679535c3a4c21b3a78.gz
|
|
|
|
|
|
|
|
|
| |
Pulled regridding out of the driver proper.
Without the new regridding thorn, Carpet will now default to a single
level, i.e. the base level only. Use the thorn CarpetRegrid and set
the parameter CarpetRegrid::refinement_levels to get refinement.
darcs-hash:20011214153904-07bb3-b765f596812c0321ab0f898f93a9fbd192c49c09.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
|
|
|
|
|
|
|
| |
Second stab at having arrays with a dimension different than grid
functions. Not yet tested.
darcs-hash:20010702112209-07bb3-816053f629c333189a63014698d4b34c124168aa.gz
|
|
|
|
|
|
|
|
| |
Introduced abstraction classes that have no <dim> parameter. This
will make it easier to adapte the driver to support multiple
dimensions at once.
darcs-hash:20010612125655-07bb3-1cba35eb867eca1234b3a40bd7a5641b64776c50.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Modified the Carpet driver so that it uses the same new timelevel
cycling as does PUGH.
Modified the CarpetIOASCII and CarpetIOFlexIO output routines so that
they always output the current time level.
Found and fixed a bug in the time interpolation in CarpetLib.
Fixed a bug where the necessary number of ghost zones for space
interpolation was calculated incorrectly.
Fixed bugs in the example parameter files that used an insufficient
number of ghost zones.
darcs-hash:20010423061011-07bb3-c69e59f7bc5f283d7632a663c0770578cdb73881.gz
|