aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib
Commit message (Collapse)AuthorAge
* CarpetLib: Store number of time levels per refinement levelErik Schnetter2006-04-13
| | | | | | | | 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: Handle empty domains correctlyErik Schnetter2006-02-27
| | | | | | | 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
* CarpetLib: Add WENO prolongationI.Hawke2006-03-10
| | | | | | | | | 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
* CarpetLib: Correct error in handling recent change to restrictionErik Schnetter2006-02-27
| | | | | | | | | 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
* CarpetLib: Do not restrict to points they are used for boundary prolongationErik Schnetter2006-02-26
| | | | | | | | Do not restrict to points they are used for boundary prolongation. Check this condition. darcs-hash:20060226002735-dae7b-36da19d1be45a8db8a2af194873cd8a3e64c8a86.gz
* CarpetLib: Rename function in dh, add const qualifiersErik Schnetter2006-02-26
| | | | darcs-hash:20060226002647-dae7b-120cbc31f8e3caf9dcf1e996844268749a954d57.gz
* CarpetLib: Rename the dh setup functionsErik Schnetter2006-02-25
| | | | darcs-hash:20060225172723-dae7b-27a2d88ad612cd88b33b83095760a55dd03d2dc4.gz
* CarpetLib: Cache the results of MPI_Comm_rank and MPI_Comm_sizeErik Schnetter2006-02-25
| | | | darcs-hash:20060225172648-dae7b-93b93c97212a7fa33c8770200b8f8b1494ad9776.gz
* CarpetLib: Mark more parameters as steerableErik Schnetter2006-02-08
| | | | darcs-hash:20060208233203-dae7b-c3837264ceeca33579afa2bfcb45c8d10803ac0e.gz
* CarpetLib: Resolve conflict in commstate.hhErik Schnetter2005-11-19
| | | | darcs-hash:20051119220215-dae7b-93b99ff6e2924297870075037a03959eb8c5fd75.gz
* CarpetLib: Rename some local variablesErik Schnetter2005-11-19
| | | | | | | 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
* CarpetLib: Define macro static_assert()Erik Schnetter2005-11-19
| | | | | | | This macro checks the assertion at compile time instead of at run time. darcs-hash:20051119203134-dae7b-36ab53fbcd87acbd1ebca930e61db47448f4a979.gz
* CarpetLib: Don't include <iosfwd> into data.hhErik Schnetter2005-11-19
| | | | darcs-hash:20051119203113-dae7b-837c1382a1c39767bf998a8c78c96310d4d28754.gz
* CarpetLib: Re-indent commstate::procbufdescErik Schnetter2005-11-19
| | | | darcs-hash:20051119203028-dae7b-833af6bcab1804e0e6bd9858c703308652edfd57.gz
* CarpetLib: Output memory statistics to fileErik Schnetter2005-11-19
| | | | | | | Add new parameter CarpetLib::memstat_file. If set, then memory statistics are periodically written to this file. darcs-hash:20051119201538-dae7b-88c8b8cd5b9d2643d1be6e682f2aa32e7a00ef2d.gz
* CarpetLib: Change member dist::comm to function dist::comm()Erik Schnetter2005-11-19
| | | | | | No functionality change, but this requires all callers to be changed. darcs-hash:20051119202604-dae7b-3492487bfdc4f3d228ec57a2b2ea02116f5cb64c.gz
* CarpetLib: Replace some int by size_tErik Schnetter2005-11-19
| | | | | | | 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
* CarpetLib: permute order of member initializers in comm_state::procbufdesc() ↵Jonathan Thornburg2005-09-21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* CarpetLib: forward-declare output operatorswhite2005-08-29
| | | | | | | Made to compile under g++ 4.1.0, which is fussy about declaration of template members. darcs-hash:20050829213105-32473-7c353b607f09ae254eb7327b32deda6045539fc5.gz
* CarpetLib: Initialise Carpet's MPI communicator with an arbitrary communicatorErik Schnetter2005-08-25
| | | | | | | Initialise Carpet's MPI communicator not with MPI_COMM_WORLD, but with a communicator that is passed in. darcs-hash:20050825084335-891bb-38744ff9cbfb5349e34676897dba3356ef7e462e.gz
* CarpetLib: bugfix in collective commbuffer schemeThomas Radke2005-08-16
| | | | | | | | | 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
* Carpet*: generalise the comm_state class for collective buffer communicationsThomas Radke2005-08-15
| | | | | | | | | 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
* CarpetLib: Implement fast recomposingErik Schnetter2005-08-11
| | | | | | | | 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
* CarpetLib: typo in push of << operatorSteve White2005-08-09
| | | | | | | | | 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
* CarpetLib: give data an << operatorSteve White2005-08-09
| | | | | | | | | | 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
* CarpetLib: Add outer buffer zonesErik Schnetter2005-08-08
| | | | | | | | | | | | | | | | | | | | | 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
* CarpetLib: Change default settings for the communication tuning parametersErik Schnetter2005-08-08
| | | | | | | These default settings are now believed to be sensible and safe for everybody. darcs-hash:20050808132929-891bb-48231878e0a5ea02312823f4b96cad1c79fdba9f.gz
* CarpetLib: Correct typo in commentErik Schnetter2005-08-08
| | | | darcs-hash:20050808132501-891bb-e03ca26e0adfe32f01065ecae0b987785855190a.gz
* CarpetLib: Change indentation of typestring definitionsErik Schnetter2005-08-08
| | | | darcs-hash:20050808132424-891bb-e352aafd9745fb66df45212a4a28e3175a7b58f0.gz
* CarpetLib: Introduce new types b2vect and i2vectErik Schnetter2005-08-08
| | | | | | | | | | | | 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
* CarpetLib: Disable check for time extrapolation for op_copy grid functionsErik Schnetter2005-07-26
| | | | | | | | | | 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
* CarpetLib: Output memory statistics, and limit maximum memory usageErik Schnetter2005-07-27
| | | | | | | | | | | | 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
* CarpetLib: Add 7th order accurate spatial interpolation operatorsErik Schnetter2005-07-15
| | | | | | | | 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
* CarpetLib: Forbid even interpolation ordersErik Schnetter2005-07-15
| | | | | | | | 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
* CarpetLib: Treat op_copy correctly when regriddingErik Schnetter2005-06-08
| | | | | | | 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
* CarpetLib: Add new transport operator type op_copyErik Schnetter2005-06-07
| | | | | | | | | | | | | | | 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
* CarpetLib: resolve conflictsErik Schnetter2005-06-06
| | | | darcs-hash:20050606162839-891bb-d7c2b48772dd8910ae362f0a96b34e1564f906b8.gz
* CarpetLib: do nothing if box to be copied is emptyThomas Radke2005-04-18
| | | | | | | | 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
* CarpetLib: resolve conflictErik Schnetter2005-06-06
| | | | darcs-hash:20050606161741-891bb-4c4c528437cc24241167486f0d3295475086e3f3.gz
* CarpetLib: remove erroneous assert statements in the collective buffers ↵Thomas Radke2005-04-11
| | | | | | communication code darcs-hash:20050411144255-776a0-cfa22ce6876ff5f598d55f2da2d8b0d474c85ab0.gz
* CarpetLib: clean-up of communication scheme for individual sends/recvs on ↵Thomas Radke2005-05-26
| | | | | | | | | | | | | | | | | | | | 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
* CarpetLib: remove bool gdata::owns_storage() which isn't needed anymore in ↵Thomas Radke2005-05-26
| | | | | | this class darcs-hash:20050526113252-776a0-58480600178d1c7beae50aa34808564a443f3c92.gz
* CarpetLib: bugfix for my latest commit for collective commbuffers optimisationThomas Radke2005-05-20
| | | | | | Used the wrong extent when copying data out of the receive buffer. darcs-hash:20050520135518-776a0-5be1fc0d19a91252df779ddc4299941d25dd37fd.gz
* CarpetLib: some optimisation for collective commbuffersThomas Radke2005-05-18
| | | | | | | Inlined copy_from_innerloop() when copying data from/to a (linear) collective commbuffer. darcs-hash:20050518174412-776a0-1871d07189f4eef5f7051e1c5fecf1db5721d874.gz
* CarpetLib: bugfix when using collective commbuffersThomas Radke2005-05-12
| | | | | | | | | 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
* CarpetLib: Output nice error message when the levels are not properly nestedErik Schnetter2005-05-08
| | | | darcs-hash:20050508171047-891bb-16398b4f0a7d38f4de71e10f5ad2f6f3f4bf26e1.gz
* CarpetLib: Instantiate missing ostream template for vector<vect<int,3> >Erik Schnetter2005-05-02
| | | | darcs-hash:20050502103959-891bb-9e29ef515ab50541c934618717e0937fb3d91d41.gz
* global: Add varying refinement factorsErik Schnetter2005-05-01
| | | | | | | | | | 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
* CarpetLib: Add function vect::reverseErik Schnetter2005-05-01
| | | | darcs-hash:20050501171344-891bb-d608668bef718cc9f4c6244b721b3d43d7c33ae0.gz
* CarpetLib: Correct assert statementsErik Schnetter2005-04-16
| | | | | | | 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