Wolfgang Bangerth [Mon, 26 Jun 2017 23:43:47 +0000 (17:43 -0600)]
Use std::unique_ptr in hp::DoFHandler.
This replaces raw pointers. A similar change was made last week to the ::DoFHandler
class already.
Wolfgang Bangerth [Mon, 26 Jun 2017 23:42:56 +0000 (17:42 -0600)]
Probably the smallest cleanups ever.
Martin Kronbichler [Mon, 26 Jun 2017 08:20:13 +0000 (10:20 +0200)]
Merge pull request #4546 from bangerth/dofhandler-cleanup-2
More DoFHandlerPolicy cleanups.
Denis Davydov [Mon, 26 Jun 2017 07:10:45 +0000 (09:10 +0200)]
Merge pull request #4545 from bangerth/index-set-cleanup
Reindent and reformat parts of index_set.h.
Wolfgang Bangerth [Mon, 26 Jun 2017 05:43:34 +0000 (23:43 -0600)]
Remove an argument to a function that was no longer used.
Specifically, it allowed to start enumerating DoFs at something other than zero.
There was a time when we allowed that, but that possibility was removed
several years ago.
The corresponding argument to distribute_mg_dofs() was removed a few days ago,
but it was accidently left on distribute_dofs().
Wolfgang Bangerth [Sat, 24 Jun 2017 08:22:40 +0000 (02:22 -0600)]
Simplify code by using new NumberCache constructors.
Wolfgang Bangerth [Sat, 24 Jun 2017 08:22:25 +0000 (02:22 -0600)]
Introduce new constructors for NumberCache.
Wolfgang Bangerth [Sun, 25 Jun 2017 02:17:26 +0000 (20:17 -0600)]
Reindent and reformat parts of index_set.h.
No functional changes, just beautify the contents of this file somewhat.
Martin Kronbichler [Sun, 25 Jun 2017 12:42:10 +0000 (14:42 +0200)]
Merge pull request #4543 from bangerth/complete-index-set
Compress the result of complete_index_set().
Martin Kronbichler [Sun, 25 Jun 2017 12:41:11 +0000 (14:41 +0200)]
Merge pull request #4538 from bangerth/dofhandler-cleanup
Further DoFHandlerPolicy cleanups.
Denis Davydov [Sun, 25 Jun 2017 07:22:12 +0000 (09:22 +0200)]
Merge pull request #4544 from bangerth/suppress-warning
Suppress a warning.
Wolfgang Bangerth [Sun, 25 Jun 2017 01:42:37 +0000 (19:42 -0600)]
Suppress a warning.
The compiler warns about the line
header_ += gzip::magic::id2; // ID2.
deep in BOOST when writing the header for a gzip-compressed block of data. This
is because (i) gzip::magic::id2 is declared as an int, and (ii) has a value
greater than what a *signed char* can store, i.e., greater than 127. Furthermore,
std::string::operator+ takes a 'char', which may or may not be unsigned but
apparently on my system is signed. So we get a warning about overflow.
The only reasonable way to deal with this is to do the casting explicitly.
Wolfgang Bangerth [Sun, 25 Jun 2017 01:32:18 +0000 (19:32 -0600)]
Add a changelog entry.
Wolfgang Bangerth [Sun, 25 Jun 2017 01:32:02 +0000 (19:32 -0600)]
Compress the result of complete_index_set().
Bruno Turcksin [Sat, 24 Jun 2017 21:40:56 +0000 (17:40 -0400)]
Merge pull request #4542 from drwells/attain-vs-obtain
Grammar: clarify obtain vs. attain.
David Wells [Sat, 24 Jun 2017 14:35:27 +0000 (10:35 -0400)]
Grammar: clarify obtain vs. attain.
Attain and obtain are nearly, but not quite, synonyms: 'attain' implies
achievement or accomplishment while 'obtain' just implies
ownership. This patch fixes our errant usage of 'attain' (one comment
also had a logic error, which I fixed).
Bruno Turcksin [Fri, 23 Jun 2017 19:48:43 +0000 (15:48 -0400)]
Merge pull request #4541 from kronbichler/fix_tests
Fix test output for two tests
Martin Kronbichler [Fri, 23 Jun 2017 17:51:13 +0000 (19:51 +0200)]
Add another output file for Trilinos 12.10.
Martin Kronbichler [Fri, 23 Jun 2017 17:50:30 +0000 (19:50 +0200)]
Adjust test output.
Wolfgang Bangerth [Fri, 23 Jun 2017 15:52:20 +0000 (09:52 -0600)]
Convert the final policy function.
Also let the renumber_dofs() functions return the NumberCache, rather than
doing so via a reference argument. No drama this time.
Wolfgang Bangerth [Fri, 23 Jun 2017 15:05:42 +0000 (09:05 -0600)]
Remove an argument to a function that was no longer used.
Specifically, it allowed to start enumerating DoFs at something other than zero.
There was a time when we allowed that, but that possibility was removed
several years ago.
Martin Kronbichler [Fri, 23 Jun 2017 14:59:37 +0000 (16:59 +0200)]
Merge pull request #4458 from nfehn/master
Initialization of Chebyshev smoother
Wolfgang Bangerth [Fri, 23 Jun 2017 14:58:16 +0000 (08:58 -0600)]
Let DoFHandler policy classes return the NumberCache also in distribute_mg_dofs().
This follows the same pattern as a previous commit. However, it involves less
drama, with the exception of an innocent assertion that had to be removed
(see the last commit). Other than that, everything seems to work.
Wolfgang Bangerth [Fri, 23 Jun 2017 14:56:10 +0000 (08:56 -0600)]
Remove an assertion in 3 related functions.
The assertion gets in the way of the following commit because it tests
a condition that at the time when we want to call this function is not
yet satisfied. However, I've convinced myself that if the DoFHandler
is truly not set up at all (as the assertion wants to check), that
the calls further down in the function will fail to work as well. In
other words, one will get *some* kind of error.
Niklas Fehn [Fri, 23 Jun 2017 13:36:56 +0000 (15:36 +0200)]
output of tests adjusted
Wolfgang Bangerth [Fri, 23 Jun 2017 13:09:53 +0000 (07:09 -0600)]
Let the DoFHandler policy classes' distribute_dofs() return the NumberCache.
In times of move operators, there is really no reason why these functions should
return the NumberCache object by reference, rather than by value. We make this
slightly more efficient by providing (defaulted) move operations to
NumberCache.
However, this change uncovered a subtle problem that sooner or later would
certainly have tripped someone up: If any of the policy classes call
any function that relies on the correctness of the number cache of the
DoFHandler object being worked on, then this is likely going to fail.
Indeed, the implementation of distribute_dofs() for shared triangulations
has this problem by calling some of the DoFTools functions that query
properties of the DoFHandler that aren't all completely consistent
yet internally.
This happened to work -- more or less by design -- because the
NumberCache object that the DoFHandler passes to distribute_dofs()
by reference is the one that belongs to the DoFHandler, and
distribute_dofs() makes sure that it sets the one member that is
necessary to the correct value before calling the DoFTools function.
This can only properly be described as 'brittle': small changes to
the code will make this fail, and it is not obvious why this works
or doesn't.
The only proper solution, obviously, is to not call external functions
from inside distribute_dofs() until all data structures have been set
up completely and are internally consistent. I work around this
by duplicating a small amount of code (specifically, the
DoFTools::get_subdomain_association() and DoFRenumbering::subdomain_wise()
functions), but this effort is made more palatable because these functions
are in fact more general than we need here, and we can throw away a good
amount of code that deals with either sequential or completely
distributed DoFHandlers; we also know that a couple of assertions
in these functions must be satisfied here, so we can eliminate them
as well.
The consequence of this code is slightly more code that is more robust
and contains fewer surprises.
Wolfgang Bangerth [Fri, 23 Jun 2017 01:41:27 +0000 (20:41 -0500)]
Merge pull request #4539 from drwells/add-material-id-glossary-link
Add a glossary link for material_id.
David Wells [Thu, 22 Jun 2017 21:20:43 +0000 (17:20 -0400)]
Add a glossary link for material_id.
Wolfgang Bangerth [Thu, 22 Jun 2017 15:34:23 +0000 (09:34 -0600)]
Don't just store references, but SmartPointer objects.
This ensures that we get an error if the referenced object is deleted first.
Wolfgang Bangerth [Thu, 22 Jun 2017 15:17:14 +0000 (09:17 -0600)]
Let the DoFHandler policy classes store references to the DoFHandler.
This is rather than passing this reference to each and every call to the policy functions.
The primary goal of this is so that we can use the Policy base class not only for the
'normal' DoFHandler, but also for the hp::DoFHandler by removing the reference to the
actual class type from the interface of the base class.
Wolfgang Bangerth [Thu, 22 Jun 2017 14:48:02 +0000 (08:48 -0600)]
Implement an empty, virtual destructor via '=default'.
Martin Kronbichler [Thu, 22 Jun 2017 12:44:55 +0000 (14:44 +0200)]
Merge pull request #4534 from bangerth/dofhandler-cleanup-3
Deprecate (hp::)DoFHandler::invalid_dof_index.
Wolfgang Bangerth [Thu, 22 Jun 2017 02:07:02 +0000 (21:07 -0500)]
Merge branch 'master' into dofhandler-cleanup-3
Daniel Arndt [Wed, 21 Jun 2017 15:35:14 +0000 (17:35 +0200)]
Merge pull request #4536 from bangerth/dofhandler-cleanup-7
Use a cheaper call.
Wolfgang Bangerth [Tue, 20 Jun 2017 08:17:04 +0000 (02:17 -0600)]
Deprecate (hp::)DoFHandler::invalid_dof_index.
Also replace all uses by numbers::invalid_dof_index. I can't see a reason to
have both of these numbers, in particular because the only logical choice is
to have them have the same value.
Wolfgang Bangerth [Wed, 21 Jun 2017 14:01:23 +0000 (08:01 -0600)]
Use a cheaper call.
The functions in question take an IndexSet argument that can either mean
something, or if it is empty, is ignored. In the places where an empty
IndexSet is passed, it actually has size zero, not just zero elements,
but in the existing code, we test whether 'indices.n_elements()==0'.
It turns out that 'n_elements()' is a pretty expensive function to call.
What we really wanted, of course, was 'indices.size()==0', and this
patch makes that change.
I ran all multigrid tests (the functions in question are multigrid
related), and they all succeed.
David Wells [Wed, 21 Jun 2017 12:53:28 +0000 (08:53 -0400)]
Merge pull request #4532 from bangerth/dofhandler-cleanup-6
Check whether a function call makes sense at the place where the function is called
Wolfgang Bangerth [Wed, 21 Jun 2017 09:38:16 +0000 (03:38 -0600)]
Rename a variable for greater clarity.
Wolfgang Bangerth [Wed, 21 Jun 2017 09:35:44 +0000 (03:35 -0600)]
Avoid a global communication by using a function that's already there.
Martin Kronbichler [Wed, 21 Jun 2017 07:29:34 +0000 (09:29 +0200)]
Merge pull request #4533 from bangerth/dofhandler-cleanup-4
Remove hp::DoFHandler::MGVertexDoFs.
Martin Kronbichler [Wed, 21 Jun 2017 07:19:53 +0000 (09:19 +0200)]
Merge pull request #4528 from bangerth/dofhandler-cleanup-2
Simplify the logic of CellDataTransferBuffer::(un)pack_data().
Martin Kronbichler [Wed, 21 Jun 2017 07:03:47 +0000 (09:03 +0200)]
Merge pull request #4535 from drwells/compile-transfinite-1d
Compile TransfiniteInterpolationManifold<1> in the library.
David Wells [Wed, 21 Jun 2017 02:15:25 +0000 (22:15 -0400)]
Compile TransfiniteInterpolationManifold<1> in the library.
In addition, disable usage of the class by throwing an exception.
This class is not as useful in 1D as it is in higher spatial dimensions, but
compiling it in the library improves generic programming (i.e., one can write a
solver that runs in 1D and 2D and on a 2D execution path can use
TransfiniteInterpolationManifold).
Wolfgang Bangerth [Tue, 20 Jun 2017 13:22:52 +0000 (07:22 -0600)]
Check whether a function call makes sense at the place where the function is called.
This is instead of returning early in the function. Check that the arguments are indeed
valid within the function.
Wolfgang Bangerth [Mon, 19 Jun 2017 11:46:40 +0000 (05:46 -0600)]
Simplify the logic of CellDataTransferBuffer::(un)pack_data().
Specifically, instead of serializing by hand with memcpy etc, use the BOOST
facilities for serialization. This works for 2 out of 3 members of this class
without problem, and the last one is easy to deal with as well.
Secondly, serialize into a gzip compressed stream to reduce the amount of data to
transfer. This reduces the size of messages significantly; for example, in the
last cycle of step-40, we get the following data -- old packet size on the left,
new (compressed) data size on the right:
6400 1694
8440 2200
8440 2412
6400 1925
7828 2042
6060 1589
1504 583
1504 520
6060 1849
7828 2280
6060 1947
7828 2375
1504 612
76 102
76 104
6400 2025
8440 2537
I did also try to run things with BOOST's bzip2 compressor instead of gzip,
given that bzip2 often does a better job than gzip, but apparently that
isn't the case here as I get the following:
6400 1912
8440 2381
8440 2712
6400 2230
7828 2197
1504 681
6060 2177
6060 1803
1504 556
7828 2678
6060 2285
7828 2738
1504 720
76 122
76 123
6400 2392
8440 2896
Wolfgang Bangerth [Tue, 20 Jun 2017 09:21:29 +0000 (03:21 -0600)]
Remove hp::DoFHandler::MGVertexDoFs.
The hp::DoFHandler class does not support multilevel DoFs, and so having a
remnant part of the infrastructure for them makes no sense. Removing this
part from the class, however, requires a couple of specializations of
functions in the DoFAccessor class that may have previously compiled,
but would likely have led to segmentation faults if anyone tried to use them.
David Wells [Tue, 20 Jun 2017 22:03:59 +0000 (18:03 -0400)]
Merge pull request #4526 from bangerth/dofhandler-cleanup
Clean up some DoFHandler things.
Bruno Turcksin [Tue, 20 Jun 2017 13:40:04 +0000 (09:40 -0400)]
Merge pull request #4531 from bangerth/fix-typos
Fix a couple of typos.
Wolfgang Bangerth [Tue, 20 Jun 2017 09:19:24 +0000 (03:19 -0600)]
Fix a couple of typos.
Daniel Arndt [Tue, 20 Jun 2017 09:18:01 +0000 (11:18 +0200)]
Merge pull request #4529 from bangerth/add-static-asserts
Add a couple of static asserts to SolutionTransfer.
Wolfgang Bangerth [Tue, 20 Jun 2017 02:27:49 +0000 (20:27 -0600)]
Guard static_asserts against MS VC.
Wolfgang Bangerth [Mon, 19 Jun 2017 23:36:15 +0000 (18:36 -0500)]
Merge pull request #4530 from drwells/fix-parameterhandler-tests
Fix two test outputs.
David Wells [Mon, 19 Jun 2017 20:41:53 +0000 (16:41 -0400)]
Fix two test outputs.
Commit
852db02945e4eedf251d528d701b0c2b10a368c2 removed the redundant
"list" (i.e., previously we printed "List list of ...") from
List::description. This commit updates the output files in the
corresponding tests.
David Wells [Mon, 19 Jun 2017 20:41:34 +0000 (16:41 -0400)]
Use constant strings in two places.
Wolfgang Bangerth [Mon, 19 Jun 2017 11:58:14 +0000 (05:58 -0600)]
Add a couple of static asserts to SolutionTransfer.
This class (in both of its incarnations) takes both a dimension and a DoFHandler
as template argument. The dimension of the DoFHandler better match the explicitly
given dimension. The added static_assert checks that and prevents instantiation
of the class if that is not the case.
Wolfgang Bangerth [Mon, 19 Jun 2017 06:06:00 +0000 (00:06 -0600)]
Return an object by value, rather than filling a reference argument.
In times of move assignment operators, there really is no reason any more not
to do this.
Wolfgang Bangerth [Mon, 19 Jun 2017 05:16:47 +0000 (23:16 -0600)]
Merge pull request #4525 from drwells/ignore-no-virtual-dtor-pragma
Add a pragma for ignoring nonvirtual destructors.
Wolfgang Bangerth [Mon, 19 Jun 2017 05:16:06 +0000 (23:16 -0600)]
Merge pull request #4476 from tamiko/add_clang_format_file
Add a .clang-format file
Wolfgang Bangerth [Mon, 19 Jun 2017 05:15:11 +0000 (23:15 -0600)]
Merge pull request #4519 from luca-heltai/key-value-separator-in-map-pattern
Key Value separator in Patterns::Map
Wolfgang Bangerth [Mon, 19 Jun 2017 03:52:53 +0000 (21:52 -0600)]
Merge pull request #4524 from drwells/use-d-linear-shape-function
Use GeometryInfo<dim>::d_linear_shape_function in two places.
Wolfgang Bangerth [Sun, 18 Jun 2017 02:55:49 +0000 (20:55 -0600)]
Rename a member variable to better reflect its purpose.
Wolfgang Bangerth [Sun, 18 Jun 2017 02:46:20 +0000 (20:46 -0600)]
Break comments.
Wolfgang Bangerth [Sun, 18 Jun 2017 02:34:16 +0000 (20:34 -0600)]
Move the CellDataTransferBuffer class out of an enclosing (useless) class.
Wolfgang Bangerth [Sun, 18 Jun 2017 02:30:55 +0000 (20:30 -0600)]
Rename the cellinfo structure to CellDataTransferBuffer.
Because that is what the class really represents. Also update the documentation.
Wolfgang Bangerth [Sun, 18 Jun 2017 01:43:50 +0000 (19:43 -0600)]
Remove a commented out piece of code.
The code suggests that one could update the cell DoF cache, but the cache only
exists for non-MG DoF indices, whereas the function where the comment resides
deals with MG level DoFs.
Wolfgang Bangerth [Sun, 18 Jun 2017 01:38:50 +0000 (19:38 -0600)]
Non-functional source cleanups at the textual level.
Wolfgang Bangerth [Sun, 18 Jun 2017 01:37:59 +0000 (19:37 -0600)]
Remove a wrong comment. Add some code documentation.
Wolfgang Bangerth [Sun, 18 Jun 2017 01:18:55 +0000 (19:18 -0600)]
Make control flow more obvious.
Wolfgang Bangerth [Sun, 18 Jun 2017 01:17:16 +0000 (19:17 -0600)]
Replace an explicit by an implicit loop.
Wolfgang Bangerth [Sun, 18 Jun 2017 01:15:09 +0000 (19:15 -0600)]
Non-functional source cleanups at the textual level.
Wolfgang Bangerth [Sun, 18 Jun 2017 01:08:56 +0000 (19:08 -0600)]
Do not check that 'new' returned a non-NULL pointer.
'new' hasn't done that since C++98 but instead throws a std::bad_alloc itself. Consequently,
the assertion would never have failed.
Wolfgang Bangerth [Sun, 18 Jun 2017 01:05:27 +0000 (19:05 -0600)]
Add documentation.
Wolfgang Bangerth [Sun, 18 Jun 2017 00:58:24 +0000 (18:58 -0600)]
Explicitly delete copy constructor and operator.
Wolfgang Bangerth [Sun, 18 Jun 2017 00:55:13 +0000 (18:55 -0600)]
Use std::unique_ptr instead of std::shared_ptr for DoFHandler::policy.
This is possible because DoFHandler has no copy constructor or operator, and consequently
there is no reason to share a policy.
Wolfgang Bangerth [Mon, 19 Jun 2017 01:46:59 +0000 (19:46 -0600)]
Adjust serialization output for use of std::unique_ptr.
Wolfgang Bangerth [Sun, 18 Jun 2017 00:52:15 +0000 (18:52 -0600)]
Use std::unique_ptrs instead of raw pointers for level/face objects in class DoFHandler.
David Wells [Mon, 19 Jun 2017 01:10:27 +0000 (21:10 -0400)]
Add a pragma for ignoring nonvirtual destructors.
An OpenCascade header triggers this warning, so lets ignore it in external
libraries.
David Wells [Mon, 19 Jun 2017 00:23:23 +0000 (20:23 -0400)]
Use GeometryInfo<dim>::d_linear_shape_function in two places.
Timo Heister [Sun, 18 Jun 2017 18:18:21 +0000 (20:18 +0200)]
Merge pull request #4523 from masterleinad/fix_uninitialized_var_dof_info
Fix uninitialized member variables in DoFInfo
Daniel Arndt [Sun, 18 Jun 2017 15:16:42 +0000 (17:16 +0200)]
Fix uninitialized member variables in DoFInfo
Denis Davydov [Sun, 18 Jun 2017 05:45:37 +0000 (07:45 +0200)]
Merge pull request #4522 from asartori86/fix_assert
Added missing template
Wolfgang Bangerth [Sun, 18 Jun 2017 00:39:47 +0000 (18:39 -0600)]
Remove an empty 'private:' section.
alberto sartori [Sat, 17 Jun 2017 21:27:14 +0000 (23:27 +0200)]
added missing spacedim template
Daniel Arndt [Fri, 16 Jun 2017 22:51:40 +0000 (00:51 +0200)]
Merge pull request #4505 from bangerth/strict-enums
Use only enum values, don't look at bits.
Wolfgang Bangerth [Fri, 16 Jun 2017 15:37:02 +0000 (09:37 -0600)]
Merge pull request #4521 from drwells/fix-trilinos-quick-test
Fix the Trilinos quick test.
David Wells [Fri, 16 Jun 2017 14:17:13 +0000 (10:17 -0400)]
Fix the Trilinos quick test.
It looks like we did not update this constructor when we removed the serial
vector (the parallel vector's constructor needs an IndexSet, not an integer).
Martin Kronbichler [Thu, 15 Jun 2017 14:26:40 +0000 (16:26 +0200)]
Merge pull request #4520 from drwells/vertex-inlining
Mark the vertex lookup functions as inline.
Luca Heltai [Thu, 15 Jun 2017 07:40:44 +0000 (09:40 +0200)]
Fixed typos.
David Wells [Mon, 12 Jun 2017 15:13:23 +0000 (11:13 -0400)]
Mark the vertex lookup functions as inline.
This lowers the number of calls to vertex() by a lot (down from 229 million to
46 million in a benchmark) and also provides about a 5% speed improvement.
For the sake of posterity, here is the benchmark used here and also in
b584c58d95 and
cbb473c59d:
#include <deal.II/base/geometry_info.h>
#include <deal.II/grid/grid_in.h>
#include <deal.II/grid/manifold_lib.h>
#include <deal.II/grid/tria.h>
#include <chrono>
#include <fstream>
#include <iostream>
using namespace dealii;
int main()
{
constexpr int dim = 2;
PolarManifold<dim> polar_manifold;
TransfiniteInterpolationManifold<dim> inner_manifold;
constexpr types::manifold_id polar_manifold_id = 1;
constexpr types::manifold_id inner_manifold_id = 2;
Triangulation<dim> triangulation;
GridIn<dim> grid_in;
std::ifstream input_grid("triangulation.msh");
grid_in.attach_triangulation(triangulation);
grid_in.read_msh(input_grid);
triangulation.set_all_manifold_ids(inner_manifold_id);
for (auto cell : triangulation.active_cell_iterators())
{
if (cell->at_boundary())
{
cell->set_all_manifold_ids(polar_manifold_id);
}
}
triangulation.set_manifold(polar_manifold_id, polar_manifold);
inner_manifold.initialize(triangulation);
triangulation.set_manifold(inner_manifold_id, inner_manifold);
#ifdef DEBUG
constexpr unsigned int n_refinements = 6;
#else
constexpr unsigned int n_refinements = 8;
#endif
for (unsigned int refinement_n = 0; refinement_n < n_refinements; ++refinement_n)
{
const auto t0 = std::chrono::high_resolution_clock::now();
triangulation.refine_global(1);
const auto t1 = std::chrono::high_resolution_clock::now();
std::cout << "Number of active cells: "
<< triangulation.n_active_cells()
<< '\n';
std::cout << "Refinement time: "
<< std::chrono::duration_cast<std::chrono::milliseconds>(t1 - t0).count()
<< '\n';
}
}
and here is triangulation.msh:
$NOD
25
1 1 0 0
2 0.
70710678118654757274 0.
70710678118654746172 0
3 6.
1232339957367660359e-17 1 0
4 -0.
70710678118654746172 0.
70710678118654757274 0
5 -1 1.
2246467991473532072e-16 0
6 -0.
70710678118654768376 -0.
70710678118654746172 0
7 -1.
8369701987210296875e-16 -1 0
8 0.
70710678118654735069 -0.
70710678118654768376 0
9 0.5 0 0
10 0.
35355339059327378637 0.
35355339059327373086 0
11 3.
0616169978683830179e-17 0.5 0
12 -0.
35355339059327373086 0.
35355339059327378637 0
13 -0.5 6.
1232339957367660359e-17 0
14 -0.
35355339059327384188 -0.
35355339059327373086 0
15 -9.
1848509936051484375e-17 -0.5 0
16 0.
35355339059327367535 -0.
35355339059327384188 0
17 -0.
22097086912079610954 -0.
22097086912079610954 0
18 0.
22097086912079610954 -0.
22097086912079610954 0
19 -0.
22097086912079610954 0.
22097086912079610954 0
20 0.
22097086912079610954 0.
22097086912079610954 0
21 0 -0.
22097086912079610954 0
22 -0.
22097086912079610954 0 0
23 0.
22097086912079610954 0 0
24 0 0.
22097086912079610954 0
25 0 0 0
$ENDNOD
$ELM
20
1 3 0 0 4 10 9 1 2
2 3 0 0 4 11 10 2 3
3 3 0 0 4 12 11 3 4
4 3 0 0 4 12 4 5 13
5 3 0 0 4 14 13 5 6
6 3 0 0 4 14 6 7 15
7 3 0 0 4 15 7 8 16
8 3 0 0 4 16 8 1 9
9 3 0 0 4 17 14 15 21
10 3 0 0 4 21 15 16 18
11 3 0 0 4 17 22 13 14
12 3 0 0 4 19 12 13 22
13 3 0 0 4 17 21 25 22
14 3 0 0 4 21 18 23 25
15 3 0 0 4 19 22 25 24
16 3 0 0 4 24 25 23 20
17 3 0 0 4 18 16 9 23
18 3 0 0 4 20 23 9 10
19 3 0 0 4 19 24 11 12
20 3 0 0 4 24 20 10 11
$ENDELM
Bruno Turcksin [Wed, 14 Jun 2017 20:24:52 +0000 (16:24 -0400)]
Merge pull request #4515 from jppelteret/fix_tw_solverbase_ad_4443
Propogate settings set in TrilinosWrappers::Solver<XYZ> to base class.
Martin Kronbichler [Wed, 14 Jun 2017 18:32:11 +0000 (20:32 +0200)]
Merge pull request #4516 from drwells/improve-vertex-caching
Improve vertex caching in a few places.
Jean-Paul Pelteret [Wed, 14 Jun 2017 16:12:16 +0000 (18:12 +0200)]
Merge pull request #4517 from masterleinad/fixup_petsc_tests
Fix up PETSc tests
Luca Heltai [Wed, 14 Jun 2017 16:07:03 +0000 (18:07 +0200)]
Improved code in Patterns::List
Luca Heltai [Wed, 14 Jun 2017 15:54:36 +0000 (17:54 +0200)]
Added new parameter to Patterns::Map
Luca Heltai [Wed, 14 Jun 2017 16:09:37 +0000 (18:09 +0200)]
Merge pull request #4518 from luca-heltai/string-delimiter-in-split-string
Added split_string_list with string as separator.
David Wells [Mon, 12 Jun 2017 15:13:04 +0000 (11:13 -0400)]
Improve vertex caching in a few places.
Calling cell->vertex() requires several index lookups before indexing into the
global vertex array so this is relatively expensive. This patch lowers, in a
TransfiniteInterpolationManifold benchmark, the number of vertex lookups from
about 361 million to 229 million and lowers the total wall time by about 5%.
Luca Heltai [Wed, 14 Jun 2017 14:06:17 +0000 (16:06 +0200)]
Added changelog.
Luca Heltai [Wed, 14 Jun 2017 13:50:05 +0000 (15:50 +0200)]
Utilities::split_string_list take a string instead of char
Daniel Arndt [Wed, 14 Jun 2017 13:40:39 +0000 (15:40 +0200)]
Fix up PETSc tests
Jean-Paul Pelteret [Wed, 14 Jun 2017 13:00:27 +0000 (15:00 +0200)]
Propogate settings set in TrilinosWrappers::Solver<XYZ> to base class.
Also allow direct setting of AdditionalData in
TrilinosWrappers::SolverBase.
Fixes #4443.
Supersedes #4512.
In the beginning the Universe was created. This has made a lot of
people very angry and has been widely regarded as a bad move.
Douglas Adams
Typeset in
Trocchi and Trocchi Bold Sans Serif.