| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
Allow a processor's domain to be empty. This needs special treatment,
because such a domain must not have ghost zones added to it.
darcs-hash:20060227001303-dae7b-e0c0f4d2455add31f0b1f7d1366e0090d31c9fff.gz
|
|
|
|
|
|
|
|
|
| |
WENO prolongation should be more accurate than ENO prolongation whilst
retaining the monotonicity properties of the ENO operators. The WENO
operators will only work with prolongation_order_space = 5 because of
the stencil width (requires 3 ghost zones).
darcs-hash:20060310132742-34bfa-32c65e7f67cb91ab36dd125a5327f2e16286e807.gz
|
|
|
|
|
|
|
|
|
| |
Correct an error in the patch "CarpetLib: Do not restrict to points
they are used for boundary prolongation".
Rename some iterators to more meaningful names.
darcs-hash:20060227001417-dae7b-65ada5d5357fef71b162163ee3f1ef74e55403db.gz
|
|
|
|
|
|
|
|
| |
Do not restrict to points they are used for boundary prolongation.
Check this condition.
darcs-hash:20060226002735-dae7b-36da19d1be45a8db8a2af194873cd8a3e64c8a86.gz
|
|
|
|
| |
darcs-hash:20060226002647-dae7b-120cbc31f8e3caf9dcf1e996844268749a954d57.gz
|
|
|
|
| |
darcs-hash:20060225172723-dae7b-27a2d88ad612cd88b33b83095760a55dd03d2dc4.gz
|
|
|
|
| |
darcs-hash:20060225172648-dae7b-93b93c97212a7fa33c8770200b8f8b1494ad9776.gz
|
|
|
|
| |
darcs-hash:20060208233203-dae7b-c3837264ceeca33579afa2bfcb45c8d10803ac0e.gz
|
|
|
|
| |
darcs-hash:20051119220215-dae7b-93b99ff6e2924297870075037a03959eb8c5fd75.gz
|
|
|
|
|
|
|
| |
Rename some local variables in dh.cc and gdata.cc so that their names
don't clash with global variables.
darcs-hash:20051119203248-dae7b-c371dfbf1e43fbd95577a17201d7cee45e5c8400.gz
|
|
|
|
|
|
|
| |
This macro checks the assertion at compile time instead of at run
time.
darcs-hash:20051119203134-dae7b-36ab53fbcd87acbd1ebca930e61db47448f4a979.gz
|
|
|
|
| |
darcs-hash:20051119203113-dae7b-837c1382a1c39767bf998a8c78c96310d4d28754.gz
|
|
|
|
| |
darcs-hash:20051119203028-dae7b-833af6bcab1804e0e6bd9858c703308652edfd57.gz
|
|
|
|
|
|
|
| |
Add new parameter CarpetLib::memstat_file. If set, then memory
statistics are periodically written to this file.
darcs-hash:20051119201538-dae7b-88c8b8cd5b9d2643d1be6e682f2aa32e7a00ef2d.gz
|
|
|
|
|
|
| |
No functionality change, but this requires all callers to be changed.
darcs-hash:20051119202604-dae7b-3492487bfdc4f3d228ec57a2b2ea02116f5cb64c.gz
|
|
|
|
|
|
|
| |
Replace some int local variables by size_t local variables. This
eliminates some compiler warnings about signed/unsigned comparisons.
darcs-hash:20051119202008-dae7b-8cf4f1bf5673b3b68164b2488f3e8c738fa55726.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
constructor to match declaration order
Long comment for this patch
===========================
C++ guarantees that an object's members will be destroyed in the reverse
order from the order in which they were constructed. (This is A Good
Thing; if nothing else, it's essential for exception-safety, since it's
possible for an exception to be thrown part-way through the construction
of an object.)
Since there might be multiple constructors, and it would be expensive
(slow!) to keep a run-time record of the actual order in which various
constructors constructed things, C++ fixes a standard order, namely
the order in which the members are declared, and always uses that.
(Hence C++ destructors, including ones automagically generated by
the compiler, always destroy members in reverse-declaration order.)
That is, if you declare a class (or struct)
class foo
{
int A, B, C;
foo();
};
then the 3 members will ALWAYS be initialized in the order A,B,C,
and destroyed in the order C,B,A, whether you write the constructor
like this
foo::foo: A(69), B(105), C(42) { } // version 1
or like this
foo::foo: B(105), C(42), A(69) { } // version 2
So far all is well. But look what happens if you use one member in
the calculation of another member's initializer, eg
foo::foo: A(69), B(A+36), C(42) { } // version 3
This is still ok... but if we now use a different order for the
member initializers,
foo::foo: B(105), C(42), A(B-36) { } // version 4
then disaster strikes: As explained above, even though they were
written in the order B,C,A, these initializers will actuallly be
executed in the order the members were delcared, i.e. A,B,C. This
means that the A initializer will use the not-yet-initialized
(and hence garbage) value of B , and hence will initialize A
to a garbage value.
Alternatively, starting with the version 3 constructor, if someone
now permutes the declarations of A, B, and C such that B is declared
before A, then the same disaster will strike again (B will be
"initialized" to garbage).
There are two standard rules of C++ style which exist precisely
to avoid this problem:
1. ALWAYS write member initializers in the same order as the members
are declared. Many C++ compilers will in fact give a warning if you
violate this rule.
2. Prefer to not use the value of any member in the calculation of
the initializer for any other member. If you need to violate
this rule, there should be a comment on both the declaration
of the members, and on the initializers, that the code relies
on a particular ordering.
For more details see, for example, item 13 in Meyeres "Effective C++".
Ok, given all this explanation... the purpose of *this* patch is to
fix the comm_state::procbufdesc() constructor to comply with rule #1
(in this case the code is still correct even when violating that rule,
but it's cleaner style to always comply.)
Previously g++ had warned of the violation:
In file included from /home/jonathan/cactus/Cactus/arrangements/Carpet/CarpetLib/src/gdata.hh:13,
from /home/jonathan/cactus/Cactus/arrangements/Carpet/CarpetLib/src/data.hh:14,
from /home/jonathan/cactus/Cactus/configs/gzmultipatch-tofu-mp/bindings/include/data.hh:4,
from /home/jonathan/cactus/Cactus/arrangements/Carpet/Carpet/src/variables.hh:21,
from /home/jonathan/cactus/Cactus/arrangements/Carpet/Carpet/src/carpet_public.hh:11,
from /home/jonathan/cactus/Cactus/configs/gzmultipatch-tofu-mp/bindings/include/carpet.hh:4,
from /home/jonathan/cactus/Cactus/configs/gzmultipatch-tofu-mp/build/GZPatchSystem/patch/angular_interpatch_ghost_zone.cc:45:
/home/jonathan/cactus/Cactus/arrangements/Carpet/CarpetLib/src/commstate.hh: In
constructor `comm_state::procbufdesc::procbufdesc()':
/home/jonathan/cactus/Cactus/arrangements/Carpet/CarpetLib/src/commstate.hh:93: warning: `
comm_state::procbufdesc::recvbuf' will be initialized after
/home/jonathan/cactus/Cactus/arrangements/Carpet/CarpetLib/src/commstate.hh:83: warning:
`char*comm_state::procbufdesc::sendbufbase'
darcs-hash:20050921145044-b0a3f-b59f991ea43729fd06fca6a5ea5d7397cefebbc3.gz
|
|
|
|
|
|
|
| |
Made to compile under g++ 4.1.0, which is fussy about declaration
of template members.
darcs-hash:20050829213105-32473-7c353b607f09ae254eb7327b32deda6045539fc5.gz
|
|
|
|
|
|
|
| |
Initialise Carpet's MPI communicator not with MPI_COMM_WORLD, but with
a communicator that is passed in.
darcs-hash:20050825084335-891bb-38744ff9cbfb5349e34676897dba3356ef7e462e.gz
|
|
|
|
|
|
|
|
|
| |
The low-level routine gdata::change_processor() wasn't aware of the collective
commbuffers communication scheme. This caused problems with CarpetInterp
which still uses this function in order to communicate data. But not for long
anymore, another patch is waiting already to be pushed.
darcs-hash:20050816135442-776a0-60371ebba14505a9d402bb08a9b0696d4b3d4702.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
|
|
|
|
|
|
|
|
|
| |
This fixes a typo in the previous push.
I also took the opportunity to bring the patch into better compliance
with the coding style.
darcs-hash:20050809143402-90671-5feae89e34e29f1648b31a66d97d578a5b283f1b.gz
|
|
|
|
|
|
|
|
|
|
| |
Added a ostream & << operator for the data class.
Made an explicit instantiation for CCTK_REAL.
Usually the amount of data renders such an operator useless,
but in test programs it is handy to be able to just print the data values.
darcs-hash:20050809093318-90671-dd30c55dc8757efa96a9bfbe90a48ff445e26f07.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Rename the previous buffer zones to "inner buffer zones". Introduce
additional "outer buffer zones". Their meaning is the same, except
that inner buffer zones are taken from the computational domain,
making it smaller, while outer buffer zones are added to the outside,
similar to ghost zones. This makes them easier to handle, both
internally in Carpet and for the end user.
This changes the API of the dh class.
There is a new field "is_interproc" in the "dboxes" structure; it
specifies whether the whole boundary is an interprocessor boundary.
(Note that boundaries can be partly interprocessor and partly
refinement boundaries.)
Both kinds of buffer zones can exist at the same time, although I
would not do that.
darcs-hash:20050808200647-891bb-9d9a8eefaf7bcb665d09869a8b564f3769d2ecc2.gz
|
|
|
|
|
|
|
| |
These default settings are now believed to be sensible and safe for
everybody.
darcs-hash:20050808132929-891bb-48231878e0a5ea02312823f4b96cad1c79fdba9f.gz
|
|
|
|
| |
darcs-hash:20050808132501-891bb-e03ca26e0adfe32f01065ecae0b987785855190a.gz
|
|
|
|
| |
darcs-hash:20050808132424-891bb-e352aafd9745fb66df45212a4a28e3175a7b58f0.gz
|
|
|
|
|
|
|
|
|
|
|
|
| |
These types are
typedef vect<vect<bool,dim>,2> b2vect;
typedef vect<vect<int,dim>,2> i2vect;
They are similar to bbvect and iivect, but have the order reversed.
They are useful if you need one element per face of a grid variable.
darcs-hash:20050808132221-891bb-fa40b6d4fb8e760c7005adf7e526dd0a6597f0ec.gz
|
|
|
|
|
|
|
|
|
|
| |
Disable the check for time extrapolation for grid functions that are
not interpolated but copied (transport_operator=op_copy). This check
needs to know the sign of delta_time, and that sign is not known here.
(For example, 3-timelevel-initialisation evolves both forwards and
backwards in time.)
darcs-hash:20050726111122-891bb-0c2130f2dfdd86c25575cbb88cb7c8ad80089eac.gz
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce a new parameter print_memstats_every. When non-zero, output
the current and total allocated amount of memory (per process).
Introduce a new parameter max_allowed_memory_MB. When more than that
amount should be allocated on the current processor, abort the run.
Only memory for grid variables counts; memory for administrative
overhead is ignored.
darcs-hash:20050727201851-891bb-c1ff9fc30ff949d576d500fbf70ad7fb5084836a.gz
|
|
|
|
|
|
|
|
| |
Add 7th order accurate spatial interpolation operators. These are
probably slow; refactoring the code into subroutines may help. Only
the special case refinement-factor=2 is implemented.
darcs-hash:20050715220610-891bb-bcab32f4c57f155142abd5f0f01341ea108d983f.gz
|
|
|
|
|
|
|
|
| |
Forbid the interpolation orders 0, 2, and 4, which were not
implemented. CarpetLib used to fall back to the higher orders 1, 3,
and 5 instead. Now, CarpetLib will abort in this case.
darcs-hash:20050715220423-891bb-2d65006f6a78cb55aec3949de30b4e68134efa0b.gz
|
|
|
|
|
|
|
| |
Treat the transport operator op_copy correctly when regridding, i.e.,
do not require more than 1 time level.
darcs-hash:20050608114748-891bb-60e3c348364f32f5abe28697266a1b36c51dd678.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add a new transport operator type op_copy. This "prolongation"
operator does not interpolate in time, but rather copies the from the
newest time level instead. Such grid functions need only one time
level.
This is intended for prolongating or restricing grid functions like
the ADM constraints; if done properly; they will have the same values
on the coarse and fine grids. (However, this does not work for the
ADM constraints, because such grid functions still need to be set in
EVOL, not in ANALYSIS.)
darcs-hash:20050607160833-891bb-cfd1c7630f8996606328d7c7e9fe326561106aba.gz
|
|
|
|
| |
darcs-hash:20050606162839-891bb-d7c2b48772dd8910ae362f0a96b34e1564f906b8.gz
|
|
|
|
|
|
|
|
| |
This fixes a bug in the collective buffers code which did call
copy_from_innerloop() even for empty boxes. The fortran routine called by
copy_from_innerloop() finally catched this bug in an assert statement.
darcs-hash:20050418170004-776a0-68fdda0131f273b80931a55d8abb5799dcf820c8.gz
|
|
|
|
| |
darcs-hash:20050606161741-891bb-4c4c528437cc24241167486f0d3295475086e3f3.gz
|
|
|
|
|
|
| |
communication code
darcs-hash:20050411144255-776a0-cfa22ce6876ff5f598d55f2da2d8b0d474c85ab0.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
single components
The default communication scheme in Carpet (which does an individual send/recv
operation for each component) comes with two parameters for fine tuning:
CarpetLib::use_lightweight_buffers
CarpetLib::combine_recv_send
the defaults of which are set to use a well-tested but also slower
communication pattern (as turned out during benchmark runs).
This patch cleans up the implementation of this communication scheme so that the
fastest communication pattern (combined posting of send/recv; use of lightweight
buffers) is now always used. The above parameters therefore became obsolete
and shouldn't be used anymore in parfiles.
darcs-hash:20050526114253-776a0-780933a1539a260d74da8b92522fa2f48c714964.gz
|
|
|
|
|
|
| |
this class
darcs-hash:20050526113252-776a0-58480600178d1c7beae50aa34808564a443f3c92.gz
|
|
|
|
|
|
| |
Used the wrong extent when copying data out of the receive buffer.
darcs-hash:20050520135518-776a0-5be1fc0d19a91252df779ddc4299941d25dd37fd.gz
|
|
|
|
|
|
|
| |
Inlined copy_from_innerloop() when copying data from/to a (linear) collective
commbuffer.
darcs-hash:20050518174412-776a0-1871d07189f4eef5f7051e1c5fecf1db5721d874.gz
|
|
|
|
|
|
|
|
|
| |
Using ready mode sends in the collective buffers communication scheme was wrong
because it is not guaranteed that the corresponding receive operations have
been posted already on other processors at that point.
Now standard mode non-blocking sends, MPI_Isend(), are used (again).
darcs-hash:20050512161846-776a0-09b27a8a9928d6c45751634c4e8f6c3af9e2dbec.gz
|
|
|
|
| |
darcs-hash:20050508171047-891bb-16398b4f0a7d38f4de71e10f5ad2f6f3f4bf26e1.gz
|
|
|
|
| |
darcs-hash:20050502103959-891bb-9e29ef515ab50541c934618717e0937fb3d91d41.gz
|
|
|
|
|
|
|
|
|
|
| |
Add support for varying refinement factors. The spatial refinement
factors can be different in different directions, can be different
from the time refinement factor, and can be different on each level.
(However, the underlying spatial transport operators do currently not
handle any factors except two.)
darcs-hash:20050501205010-891bb-8d3a74abaad55ee6c77ef18d51fca2a2b69740de.gz
|
|
|
|
| |
darcs-hash:20050501171344-891bb-d608668bef718cc9f4c6244b721b3d43d7c33ae0.gz
|
|
|
|
|
|
|
| |
Use assert (dist::rank() == proc()) instead of assert (_owns_storage).
The latter is wrong; it misinterprets the meaning of the field _owns_storage.
darcs-hash:20050416184109-891bb-a07ba29e020dad420edebaa0c824b7c207d1ac2b.gz
|