]>
https://gitweb.dealii.org/ - dealii.git/log
Peter Munch [Thu, 19 Nov 2020 20:39:36 +0000 (21:39 +0100)]
Use hp::MappingCollection initialize_cell_range
Martin Kronbichler [Fri, 20 Nov 2020 17:11:44 +0000 (18:11 +0100)]
Merge pull request #11212 from peterrum/feevaluation_active_fe_index
FEEvaluation: make active_fe_index and active_quad_index an optional …
Martin Kronbichler [Fri, 20 Nov 2020 17:09:04 +0000 (18:09 +0100)]
Merge pull request #11209 from peterrum/matrixfree_hp_mapping_collection
Introduce MappingCollection in MatrixFree
Peter Munch [Thu, 19 Nov 2020 20:39:36 +0000 (21:39 +0100)]
Introduce MappingCollection in MatrixFree
Peter Munch [Fri, 20 Nov 2020 08:05:37 +0000 (09:05 +0100)]
Add test
Peter Munch [Thu, 19 Nov 2020 23:39:37 +0000 (00:39 +0100)]
FEEvaluation: make active_fe_index and active_quad_index an optional input argument
Martin Kronbichler [Fri, 20 Nov 2020 09:45:59 +0000 (10:45 +0100)]
Merge pull request #11213 from peterrum/FEEvaluationBaseData_bug_fix
Fix bug in constructor of FEEvaluationBaseData
Peter Munch [Thu, 19 Nov 2020 23:39:37 +0000 (00:39 +0100)]
Fix bug in constructor of FEEvaluationBaseData
David Wells [Thu, 19 Nov 2020 22:04:33 +0000 (17:04 -0500)]
Merge pull request #11191 from bangerth/affine
Improve the documentation of a couple of AffineConstraints functions.
Matthias Maier [Thu, 19 Nov 2020 20:55:52 +0000 (14:55 -0600)]
Merge pull request #11208 from kronbichler/fix_interpolate_to_mg_tests
Fix tests with MGTransferMatrixFree::interpolate_to_mg
Martin Kronbichler [Thu, 19 Nov 2020 19:05:49 +0000 (20:05 +0100)]
Fix tests with MGTransferMatrixFree::interpolate_to_mg
Daniel Arndt [Thu, 19 Nov 2020 18:42:16 +0000 (13:42 -0500)]
Merge pull request #11197 from tjhei/dox_simplify_mesh_loop
doxygen: simplify mesh_loop arguments
Wolfgang Bangerth [Thu, 19 Nov 2020 17:33:29 +0000 (10:33 -0700)]
Remove an outdated comment.
Wolfgang Bangerth [Tue, 17 Nov 2020 00:34:47 +0000 (17:34 -0700)]
Improve the documentation of a couple of AffineConstraints functions.
Specifically, improve the naming of the arguments to better reflect what they refer to.
While there also use better doxygen markup.
Luca Heltai [Thu, 19 Nov 2020 10:20:03 +0000 (11:20 +0100)]
Merge pull request #11205 from masterleinad/avoid_printing_osx_ci_gcc
Avoid printing gcc information in OSX CI
Peter Munch [Thu, 19 Nov 2020 08:58:41 +0000 (09:58 +0100)]
Merge pull request #11203 from drwells/mf-simplex-permitted-list
Add simplex elements to the MF permitted list.
Peter Munch [Thu, 19 Nov 2020 08:40:20 +0000 (09:40 +0100)]
Merge pull request #11202 from kronbichler/improve_interpolate_to_mg
Improve MGTransferMatrixFree::interpolate_to_mg
Martin Kronbichler [Thu, 19 Nov 2020 07:03:29 +0000 (08:03 +0100)]
Merge pull request #11199 from lethe-cfd/particle_update_optimization
Add particle update data function to overwrite particle information
Martin Kronbichler [Wed, 18 Nov 2020 20:04:54 +0000 (21:04 +0100)]
Improve MGTransferMatrixFree::interpolate_to_mg
In particular, we should use the vector partitioners already in the MG transfer class.
Bruno [Wed, 18 Nov 2020 02:07:02 +0000 (21:07 -0500)]
Add particle update data function to overwrite particle information without recreating the particle
Added documentation and fixed indentation
Added out to documentation
Co-authored-by: Martin Kronbichler <kronbichler@lnm.mw.tum.de>
Daniel Arndt [Wed, 18 Nov 2020 22:36:06 +0000 (17:36 -0500)]
Avoid printing gcc information in OSX CI
David Wells [Wed, 18 Nov 2020 22:04:43 +0000 (17:04 -0500)]
Add simplex elements to the MF permitted list.
Luca Heltai [Wed, 18 Nov 2020 22:00:57 +0000 (23:00 +0100)]
Merge pull request #11200 from luca-heltai/fix-github
[CI] OSX tester: change to gcc-10.
Luca Heltai [Wed, 18 Nov 2020 17:53:57 +0000 (18:53 +0100)]
Change to gcc-10.
David Wells [Wed, 18 Nov 2020 17:32:06 +0000 (12:32 -0500)]
Merge pull request #11196 from peterrum/use_shape_info_simplex
Actually use ShapeInfo for Simplex::FE_P and Simplex::QGauss
Peter Munch [Tue, 17 Nov 2020 18:50:16 +0000 (19:50 +0100)]
Actually use ShapeInfo for Simplex::FE_P and Simplex::QGauss
David Wells [Wed, 18 Nov 2020 15:17:15 +0000 (10:17 -0500)]
Merge pull request #11194 from bangerth/fe-values-2
Better document some FEValues functions.
Peter Munch [Wed, 18 Nov 2020 15:08:27 +0000 (16:08 +0100)]
Merge pull request #11160 from marcfehling/deprecate_dofhandler_init
Deprecate DoFHandler initialization interface.
Timo Heister [Tue, 17 Nov 2020 18:59:01 +0000 (13:59 -0500)]
doxygen: simplify mesh_loop arguments
The documentation of mesh_loop() has terrible readability. Fix this:
- introduce "using" for the std::function types
- when running doxygen, remove the std::identity<> wrappers
Daniel Arndt [Tue, 17 Nov 2020 21:32:56 +0000 (16:32 -0500)]
Merge pull request #11189 from marcfehling/deprecate-ci-getset_cell
Deprecate DataPostprocessorInputs::CommonInputs::{get|set}_cell.
Marc Fehling [Tue, 3 Nov 2020 02:03:07 +0000 (19:03 -0700)]
Avoid using deprecated DoFHandler functions in examples.
Marc Fehling [Tue, 10 Nov 2020 21:30:14 +0000 (14:30 -0700)]
Avoid using deprecated DoFHandler functions in source.
Marc Fehling [Tue, 3 Nov 2020 01:51:36 +0000 (18:51 -0700)]
Slim interface for DoFHandler initialization.
Martin Kronbichler [Tue, 17 Nov 2020 18:23:18 +0000 (19:23 +0100)]
Merge pull request #11188 from peterrum/FEEvaluationImpl_tensor_none
Make FEEvaluationImpl work for ElementType::tensor_none
Marc Fehling [Tue, 10 Nov 2020 19:50:33 +0000 (12:50 -0700)]
Deprecate DataPostprocessorInputs::CommonInputs::{get|set}_cell.
Martin Kronbichler [Tue, 17 Nov 2020 18:20:56 +0000 (19:20 +0100)]
Merge pull request #11186 from peterrum/shape_info_simplex
Make ShapeInfo compatible with Simplex::FE_P and Simplex::QGauss
Daniel Arndt [Tue, 17 Nov 2020 16:56:31 +0000 (11:56 -0500)]
Merge pull request #11193 from bangerth/fe-values
Better document a bunch of functions.
Peter Munch [Sun, 15 Nov 2020 16:57:46 +0000 (17:57 +0100)]
Make FEEvaluationImpl work for ElementType::tensor_none
Peter Munch [Sun, 15 Nov 2020 09:12:40 +0000 (10:12 +0100)]
Make ShapeInfo compatible with Simplex::FE_P and Simplex::QGauss
Martin Kronbichler [Tue, 17 Nov 2020 12:35:53 +0000 (13:35 +0100)]
Merge pull request #11177 from peterrum/feevaluation_assert_verbose
Make assert more verbose in FEEvaluation
Martin Kronbichler [Tue, 17 Nov 2020 12:28:35 +0000 (13:28 +0100)]
Merge pull request #11192 from bangerth/notation
Use upper-case letters for vectors in the documentation.
Wolfgang Bangerth [Tue, 17 Nov 2020 01:28:38 +0000 (18:28 -0700)]
Better document some FEValues functions.
While there, mark some input arguments as 'const'.
Wolfgang Bangerth [Tue, 17 Nov 2020 01:00:45 +0000 (18:00 -0700)]
Better document a bunch of functions.
Wolfgang Bangerth [Tue, 17 Nov 2020 00:38:12 +0000 (17:38 -0700)]
Use upper-case letters for vectors in the documentation.
Specifically, here use 'F' instead of 'f' as that is also the letters used in the
detailed documentation of the function we're referring to.
Peter Munch [Mon, 16 Nov 2020 21:16:00 +0000 (22:16 +0100)]
Merge pull request #11171 from marcfehling/deprecate-hpdofhandler
Deprecate hp::DoFHandler.
Marc Fehling [Fri, 13 Nov 2020 02:40:20 +0000 (19:40 -0700)]
Prefer basic DoFHandler over deprecated hp::DoFHandler.
Marc Fehling [Fri, 13 Nov 2020 02:43:09 +0000 (19:43 -0700)]
Deprecate hp::DoFHandler.
Added missing deprecate flags in matrix_free.h.
Added DEAL_II_*_EXTRA_DIAGNOSTICS pragmas in matrix_free.h
to avoid deprecation warnings during CI.
Bruno Turcksin [Mon, 16 Nov 2020 01:24:23 +0000 (20:24 -0500)]
Merge pull request #11187 from peterrum/step-67-typo
Fix typo in step 67
Peter Munch [Sun, 15 Nov 2020 15:35:01 +0000 (16:35 +0100)]
Fix typo in step 67
Peter Munch [Thu, 12 Nov 2020 15:51:22 +0000 (16:51 +0100)]
Make assert more verbose in FEEvaluation
David Wells [Sat, 14 Nov 2020 14:10:36 +0000 (09:10 -0500)]
Merge pull request #11184 from kronbichler/clean_up_macro_cell
Avoid name macro_cell in matrix-free implementation
Martin Kronbichler [Sat, 14 Nov 2020 13:54:27 +0000 (14:54 +0100)]
Merge pull request #11182 from marcfehling/rm-dhtype-dataentry
Remove DoFHandlerType from internal::DataOutImplementation::{DataEntryBase|DataEntry|MGDataEntry}.
Martin Kronbichler [Sat, 14 Nov 2020 11:50:08 +0000 (12:50 +0100)]
Avoid name macro_cell in matrix-free implementation
Martin Kronbichler [Sat, 14 Nov 2020 09:58:13 +0000 (10:58 +0100)]
Merge pull request #11183 from tjhei/mf_deprecate_macro_cells
MatrixFree: deprecate n_macro_cells
Peter Munch [Sat, 14 Nov 2020 09:12:28 +0000 (10:12 +0100)]
Merge pull request #11181 from marcfehling/deprecate-mf-get_dof_handler
Deprecate MatrixFree::get_dof_handler.
Marc Fehling [Tue, 10 Nov 2020 06:55:08 +0000 (23:55 -0700)]
Deprecate MatrixFree::get_dof_handler.
Removing the instantiation will throw an error if someone writes
matrix_free.template get_dof_handler<DoFHandler<dim>>();
which will probably never happen as the default template is way more convenient.
Timo Heister [Sat, 14 Nov 2020 03:40:05 +0000 (22:40 -0500)]
MatrixFree: deprecate n_macro_cells
For the longest time we had n_macro_cells() and n_cell_batches() return
the same thing.
While n_cell_batches() has fewer uses (27 vs 136), I find the term
"macro cell" confusing and incorrect.
Marc Fehling [Sat, 14 Nov 2020 02:31:36 +0000 (19:31 -0700)]
Remove DoFHandlerType from internal::DataOutImplementation::{DataEntryBase|DataEntry|MGDataEntry}.
Peter Munch [Fri, 13 Nov 2020 20:30:13 +0000 (21:30 +0100)]
Merge pull request #11180 from peterrum/mpicomm_missing_reference
Add missing const MPI_Comm &
Jean-Paul Pelteret [Fri, 13 Nov 2020 19:59:31 +0000 (20:59 +0100)]
Merge pull request #11128 from jppelteret/ad_helper_bug_fix_01
ADHelpers: Fix indexing for symm tensor extractor
Peter Munch [Fri, 13 Nov 2020 19:10:58 +0000 (20:10 +0100)]
Add missing const MPI_Comm &
Martin Kronbichler [Fri, 13 Nov 2020 17:48:39 +0000 (18:48 +0100)]
Merge pull request #11168 from peterrum/mf_quadrature_dim
Make MatrixFree compile for arbitrary dim quadrature rules
David Wells [Fri, 13 Nov 2020 16:03:55 +0000 (11:03 -0500)]
Merge pull request #11176 from peterrum/qcollection_1D
QCollection<dim> accept Quadrature<1>
David Wells [Fri, 13 Nov 2020 15:43:17 +0000 (10:43 -0500)]
Merge pull request #11169 from peterrum/mf_reinit_mapping_default_mapping
Deprecate MatrixFree::reinit() functions with default Mapping argument
Peter Munch [Wed, 11 Nov 2020 22:11:17 +0000 (23:11 +0100)]
Deprecate MatrixFree::reinit() functions with default Mapping argument
Peter Munch [Thu, 12 Nov 2020 13:01:23 +0000 (14:01 +0100)]
Make MatrixFree compile for arbitrary dim quadrature rules
Peter Munch [Fri, 13 Nov 2020 10:49:02 +0000 (11:49 +0100)]
Merge pull request #11179 from peterrum/step37-update-docu
Step-37: small update to the documentation
Martin Kronbichler [Fri, 13 Nov 2020 08:32:30 +0000 (09:32 +0100)]
Merge pull request #11159 from mathsen/mg_parallel_Cuthill_Mc_Kee
parallel running version of multigrid Cuthill McKee reordering
Martin Kronbichler [Fri, 13 Nov 2020 08:31:29 +0000 (09:31 +0100)]
Merge pull request #11163 from peterrum/particles_partitioner
Move GhostParticlePartitioner
Peter Munch [Fri, 13 Nov 2020 08:14:53 +0000 (09:14 +0100)]
Step-37: small update to the documentation
Jean-Paul Pelteret [Thu, 12 Nov 2020 22:14:08 +0000 (23:14 +0100)]
Added a changelog
Timo Heister [Thu, 12 Nov 2020 13:06:07 +0000 (08:06 -0500)]
Merge pull request #11175 from peterrum/fix_type_pdt
Fix typo
Peter Munch [Thu, 12 Nov 2020 11:49:51 +0000 (12:49 +0100)]
QCollection<dim> accept Quadrature<1>
Peter Munch [Thu, 12 Nov 2020 11:17:25 +0000 (12:17 +0100)]
Fix typo
Peter Munch [Wed, 11 Nov 2020 17:25:30 +0000 (18:25 +0100)]
Move GhostParticlePartitioner
Martin Kronbichler [Thu, 12 Nov 2020 08:42:15 +0000 (09:42 +0100)]
Merge pull request #11170 from marcfehling/deprecate-feoperator
Deprecated FiniteElement::operator[].
Marc Fehling [Thu, 12 Nov 2020 02:37:05 +0000 (19:37 -0700)]
Deprecated FiniteElement::operator[].
Timo Heister [Wed, 11 Nov 2020 20:09:27 +0000 (15:09 -0500)]
Merge pull request #11164 from peterrum/DEAL_II_MPI_VERSION_GTE
Define DEAL_II_MPI_VERSION_GTE also for serial compilation
Peter Munch [Wed, 11 Nov 2020 20:01:54 +0000 (21:01 +0100)]
Merge pull request #11165 from mschreter/fe_evaluation_fix_comment
Fix typo in class documentation of "FEEvaluation"
Magdalena Schreter [Wed, 11 Nov 2020 19:40:15 +0000 (20:40 +0100)]
fix typo in class documentation of FEEvaluation
Peter Munch [Wed, 11 Nov 2020 17:35:14 +0000 (18:35 +0100)]
Define DEAL_II_MPI_VERSION_GTE also for serial compilation
Bruno Turcksin [Wed, 11 Nov 2020 13:29:02 +0000 (08:29 -0500)]
Merge pull request #11161 from marcfehling/hp-refinement
Functions of hp::Refinement now only available for DoFHandler in hp mode.
Peter Munch [Wed, 11 Nov 2020 11:46:29 +0000 (12:46 +0100)]
Merge pull request #10899 from drwells/gridin-exodusii
Support ExodusII with GridIn
Martin Kronbichler [Wed, 11 Nov 2020 11:28:20 +0000 (12:28 +0100)]
Merge pull request #11162 from peterrum/step67-skew-ref
Add reference to skew-symmetric implementation in step-67
Mathias Anselmann [Wed, 11 Nov 2020 11:26:28 +0000 (12:26 +0100)]
Added test for extract_locally_active_level_dofs and applied changes proposed by kronbichler
Martin Kronbichler [Wed, 11 Nov 2020 10:30:07 +0000 (11:30 +0100)]
Merge pull request #11156 from peterrum/reset_ghost_values_impl
Improve VectorDataExchange::Full::reset_ghost_values
Martin Kronbichler [Wed, 11 Nov 2020 10:29:31 +0000 (11:29 +0100)]
Merge pull request #11154 from peterrum/compute_shared_memory_contiguous_indices_fix
Fix compute_shared_memory_contiguous_indices
Martin Kronbichler [Wed, 11 Nov 2020 10:29:00 +0000 (11:29 +0100)]
Merge pull request #11157 from peterrum/fe_face_evaluation_process_and_io_comp_fix
Fix fe_face_evaluation_process_and_io for multiple components
Martin Kronbichler [Wed, 11 Nov 2020 10:28:17 +0000 (11:28 +0100)]
Merge pull request #11152 from lethe-cfd/update_ghost_particles_part_2
Finish mechanism for the update of ghost particles
Martin Kronbichler [Wed, 11 Nov 2020 10:27:20 +0000 (11:27 +0100)]
Merge pull request #11133 from marcfehling/slim-dofhandler-init
Rework DoFHandler connections to underlying Triangulation.
Peter Munch [Wed, 11 Nov 2020 10:09:33 +0000 (11:09 +0100)]
Add reference to skew-symmetric implementation in step-67
Mathias Anselmann [Wed, 11 Nov 2020 09:33:42 +0000 (10:33 +0100)]
save a copy of the locally owned DoFs IndexSet and use a reference instead
Mathias Anselmann [Tue, 10 Nov 2020 23:24:22 +0000 (00:24 +0100)]
applied proposed changes by masterleinad
Marc Fehling [Tue, 3 Nov 2020 01:56:29 +0000 (18:56 -0700)]
Rework DoFHandler connections to underlying Triangulation.
Bruno [Wed, 4 Nov 2020 17:21:19 +0000 (12:21 -0500)]
Introduction of ghost particles cache and new version to send
information on ghost partilces without rebuilding them
Added a test with asymmetric ghosts because there was an error in the
previous implementation and this test enabled me to find it
Added changelog
David Wells [Wed, 9 Sep 2020 17:03:14 +0000 (13:03 -0400)]
Implement ExodusII in GridIn.
The tests were all generated by hand. For future reference I included the code here.
Here is the basic 2D test (five quadrilaterals):
#include <exodusII.h>
#include <algorithm>
#include <cassert>
#include <cstring>
// Create a disk mesh with five quadrilaterals.
//
// ____________________________
// |\ /|
// | \ / |
// | \ 3 / |
// | \ / |
// | \ / |
// | \ / |
// | \______________/ |
// | | | |
// | | | |
// | | | |
// | 4 | 5 | 2 |
// | | | |
// | |______________| |
// | / \ |
// | / \ |
// | / \ |
// | / \ |
// | / 1 \ |
// | / \ |
// |/ \|
// -----------------------------
//
// element 1 has external side sets 0, 1
// element 2 has external side sets 0, 1, 10
// element 3 has no external side sets
// element 4 has no external side set 0
//
// The inner element is in block 10 - the rest are in block 1.
int main()
{
const int n_elems = 5;
const int n_nodes = 8;
int elements_1[n_elems - 1][4] = {
{1, 2, 3, 4},
{3, 2, 8, 7},
{5, 7, 8, 6},
{1, 4, 5, 6}};
int elements_10[1][4] = {{4, 3, 7, 5}};
double xs[n_nodes] = {0, 7, 5, 2, 2, 0, 5, 7};
double ys[n_nodes] = {0, 0, 2, 2, 5, 7, 5, 7};
int sizeof_data = sizeof(double);
int sizeof_geom = sizeof(double);
const int exid = ex_create("five.e", EX_CLOBBER, &sizeof_data, &sizeof_geom);
const int dim = 2;
const int n_blocks = 2;
const int n_node_sets = 0;
const int n_side_sets = 3;
int ierr = ex_put_init(exid, "mytitle", dim, n_nodes, n_elems, n_blocks,
n_node_sets, n_side_sets);
assert(ierr == 0);
// nodes:
ierr = ex_put_coord(exid, xs, ys, nullptr);
assert(ierr == 0);
// element blocks:
ierr = ex_put_elem_block(exid, 1, "quad", 4, 4, 0);
assert(ierr == 0);
ierr = ex_put_elem_block(exid, 10, "quad", 1, 4, 0);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 10, elements_10);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 1, elements_1);
assert(ierr == 0);
// side sets:
ierr = ex_put_side_set_param(exid, 0, 3, 0);
assert(ierr == 0);
int sideset_0_elems[] = {1, 2, 4};
int sideset_0_sides[] = {1, 2, 4};
ierr = ex_put_side_set(exid, 0, sideset_0_elems, sideset_0_sides);
assert(ierr == 0);
ierr = ex_put_side_set_param(exid, 1, 2, 0);
assert(ierr == 0);
int sideset_1_elems[] = {1, 2};
int sideset_1_sides[] = {1, 2};
ierr = ex_put_side_set(exid, 1, sideset_1_elems, sideset_1_sides);
assert(ierr == 0);
ierr = ex_put_side_set_param(exid, 10, 1, 0);
assert(ierr == 0);
int sideset_10_elems[] = {2};
int sideset_10_sides[] = {2};
ierr = ex_put_side_set(exid, 10, sideset_10_elems, sideset_10_sides);
assert(ierr == 0);
ierr = ex_close(exid);
assert(ierr == 0);
}
A 3D mixed mesh:
#include <exodusII.h>
#include <algorithm>
#include <cassert>
#include <cstring>
int main()
{
const int n_elems = 4;
const int n_nodes = 13;
int elements_1[1][8] = {{1, 2, 3, 4, 5, 6, 7, 8}};
int elements_2[1][5] = {{5, 6, 7, 8, 9}};
int elements_3[1][4] = {{6, 10, 7, 9}};
int elements_4[1][6] = {{10, 6, 7, 13, 11, 12}};
double xs[n_nodes] = {0, 3, 3, 0, 0, 3, 3, 0, 1, 3, 8, 8, 8};
double ys[n_nodes] = {0, 0, 3, 3, 0, 0, 3, 3, 1, 1, 0, 3, 1};
double zs[n_nodes] = {0, 0, 0, 0, 3, 3, 3, 3, 5, 5, 3, 3, 5};
int sizeof_data = sizeof(double);
int sizeof_geom = sizeof(double);
const int exid = ex_create("four.e", EX_CLOBBER, &sizeof_data, &sizeof_geom);
const int dim = 3;
const int n_blocks = n_elems;
const int n_node_sets = 0;
const int n_side_sets = 0;
int ierr = ex_put_init(exid, "mytitle", dim, n_nodes, n_elems, n_blocks,
n_node_sets, n_side_sets);
assert(ierr == 0);
// nodes:
ierr = ex_put_coord(exid, xs, ys, zs);
assert(ierr == 0);
// block 0 (hex):
ierr = ex_put_elem_block(exid, 1, "hex", 1, 8, 0);
assert(ierr == 0);
// block 1 (pyramid):
ierr = ex_put_elem_block(exid, 10, "pyramid", 1, 5, 0);
assert(ierr == 0);
// block 2 (tet):
ierr = ex_put_elem_block(exid, 100, "tet", 1, 4, 0);
assert(ierr == 0);
// block 3 (wedge):
ierr = ex_put_elem_block(exid, 1000, "wedge", 1, 6, 0);
assert(ierr == 0);
// connectivity:
ierr = ex_put_elem_conn(exid, 1, elements_1);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 10, elements_2);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 100, elements_3);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 1000, elements_4);
assert(ierr == 0);
ierr = ex_close(exid);
assert(ierr == 0);
}
Check that we can truncate higher-order elements correctly (like PYRAMID14 ->
our five-point pyramid)
#include <exodusII.h>
#include <algorithm>
#include <cassert>
#include <cstring>
int main()
{
const int n_elems = 4;
const int n_nodes = 29;
int elements_1[1][20] = {{1, 2, 3, 4, 5, 6, 7, 8, 17, 14, 15, 16, 21, 18, 19, 20, 25, 22, 23, 24}};
// int elements_1[1][8] = {{1, 2, 3, 4, 5, 6, 7, 8}};
int elements_2[1][13] = {{5, 6, 7, 8, 9, 25, 22, 23, 24, 26, 27, 28, 29}};
int elements_3[1][4] = {{6, 10, 7, 9}};
int elements_4[1][6] = {{10, 6, 7, 13, 11, 12}};
double xs[n_nodes] = {0, 3, 3, 0, 0, 3, 3, 0, 1, 3, 8, 8, 8, 3, 1.5, 0, 1.5, 3, 3, 0, 0, 3, 1.5, 0, 1.5, 0.5, 2, 2, 0.5};
double ys[n_nodes] = {0, 0, 3, 3, 0, 0, 3, 3, 1, 1, 0, 3, 1, 1.5, 3, 1.5, 0, 0, 3, 3, 0, 1.5, 3, 1.5, 0, 0.5, 0.5, 2, 2};
double zs[n_nodes] = {0, 0, 0, 0, 3, 3, 3, 3, 5, 5, 3, 3, 5, 0, 0, 0, 0, 1.5, 1.5, 1.5, 1.5, 3, 3, 3, 3, 4, 4, 4, 4};
int sizeof_data = sizeof(double);
int sizeof_geom = sizeof(double);
const int exid = ex_create("four-p.e", EX_CLOBBER, &sizeof_data, &sizeof_geom);
const int dim = 3;
const int n_blocks = n_elems;
const int n_node_sets = 0;
const int n_side_sets = 0;
int ierr = ex_put_init(exid, "mytitle", dim, n_nodes, n_elems, n_blocks,
n_node_sets, n_side_sets);
assert(ierr == 0);
// nodes:
ierr = ex_put_coord(exid, xs, ys, zs);
assert(ierr == 0);
// block 0 (hex):
ierr = ex_put_elem_block(exid, 1, "hex20", 1, 20, 0);
assert(ierr == 0);
// block 1 (pyramid):
ierr = ex_put_elem_block(exid, 10, "pyramid13", 1, 13, 0);
assert(ierr == 0);
// block 2 (tet):
ierr = ex_put_elem_block(exid, 100, "tet", 1, 4, 0);
assert(ierr == 0);
// block 3 (wedge):
ierr = ex_put_elem_block(exid, 1000, "wedge", 1, 6, 0);
assert(ierr == 0);
// connectivity:
ierr = ex_put_elem_conn(exid, 1, elements_1);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 10, elements_2);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 100, elements_3);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 1000, elements_4);
assert(ierr == 0);
ierr = ex_close(exid);
assert(ierr == 0);
}
Get things working with a nonzero codimension:
#include <exodusII.h>
#include <algorithm>
#include <cassert>
#include <cstring>
// Create a disk mesh with five quadrilaterals.
//
// ____________________________
// |\ /|
// | \ / |
// | \ 3 / |
// | \ / |
// | \ / |
// | \ / |
// | \______________/ |
// | | | |
// | | | |
// | | | |
// | 4 | 5 | 2 |
// | | | |
// | |______________| |
// | / \ |
// | / \ |
// | / \ |
// | / \ |
// | / 1 \ |
// | / \ |
// |/ \|
// -----------------------------
//
// element 1 has external side sets 0, 1
// element 2 has external side sets 0, 1, 10
// element 3 has no external side sets
// element 4 has no external side set 0
//
// The inner element is in block 10 - the rest are in block 1.
int main()
{
const int n_elems = 5;
const int n_nodes = 8;
int elements_1[n_elems - 1][4] = {
{1, 2, 3, 4},
{1, 4, 5, 6},
{2, 8, 7, 3},
{6, 5, 7, 8}};
int elements_10[1][4] = {{4, 3, 7, 5}};
double xs[n_nodes] = {0, 7, 5, 2, 2, 0, 5, 7};
double ys[n_nodes] = {0, 0, 2, 2, 5, 7, 5, 7};
int sizeof_data = sizeof(double);
int sizeof_geom = sizeof(double);
const int exid = ex_create("five-3d.e", EX_CLOBBER, &sizeof_data, &sizeof_geom);
const int dim = 3;
const int n_blocks = 2;
const int n_node_sets = 0;
const int n_side_sets = 3;
int ierr = ex_put_init(exid, "mytitle", dim, n_nodes, n_elems, n_blocks,
n_node_sets, n_side_sets);
assert(ierr == 0);
// nodes:
ierr = ex_put_coord(exid, xs, ys, xs);
assert(ierr == 0);
// element blocks:
ierr = ex_put_elem_block(exid, 1, "quad", 4, 4, 0);
assert(ierr == 0);
ierr = ex_put_elem_block(exid, 10, "quad", 1, 4, 0);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 10, elements_10);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 1, elements_1);
assert(ierr == 0);
// side sets:
ierr = ex_put_side_set_param(exid, 0, 3, 0);
assert(ierr == 0);
int sideset_0_elems[] = {1, 2, 4};
int sideset_0_sides[] = {3, 4, 6};
ierr = ex_put_side_set(exid, 0, sideset_0_elems, sideset_0_sides);
assert(ierr == 0);
ierr = ex_put_side_set_param(exid, 1, 2, 0);
assert(ierr == 0);
int sideset_1_elems[] = {1, 2};
int sideset_1_sides[] = {3, 4};
ierr = ex_put_side_set(exid, 1, sideset_1_elems, sideset_1_sides);
assert(ierr == 0);
ierr = ex_put_side_set_param(exid, 10, 1, 0);
assert(ierr == 0);
int sideset_10_elems[] = {2};
int sideset_10_sides[] = {4};
ierr = ex_put_side_set(exid, 10, sideset_10_elems, sideset_10_sides);
assert(ierr == 0);
ierr = ex_close(exid);
assert(ierr == 0);
}
Check sidesets in 3D:
#include <exodusII.h>
#include <algorithm>
#include <cassert>
#include <cstring>
// Like writer-2 but with side sets.
int main()
{
const int n_elems = 4;
const int n_nodes = 13;
int elements_1[1][8] = {{1, 2, 3, 4, 5, 6, 7, 8}};
int elements_2[1][5] = {{5, 6, 7, 8, 9}};
int elements_3[1][4] = {{6, 10, 7, 9}};
int elements_4[1][6] = {{10, 6, 7, 13, 11, 12}};
double xs[n_nodes] = {0, 3, 3, 0, 0, 3, 3, 0, 1, 3, 8, 8, 8};
double ys[n_nodes] = {0, 0, 3, 3, 0, 0, 3, 3, 1, 1, 0, 3, 1};
double zs[n_nodes] = {0, 0, 0, 0, 3, 3, 3, 3, 5, 5, 3, 3, 5};
int sizeof_data = sizeof(double);
int sizeof_geom = sizeof(double);
const int exid = ex_create("four-sidesets.e", EX_CLOBBER, &sizeof_data, &sizeof_geom);
const int dim = 3;
const int n_blocks = n_elems;
const int n_node_sets = 0;
const int n_side_sets = 5;
int ierr = ex_put_init(exid, "mytitle", dim, n_nodes, n_elems, n_blocks,
n_node_sets, n_side_sets);
assert(ierr == 0);
// nodes:
ierr = ex_put_coord(exid, xs, ys, zs);
assert(ierr == 0);
// block 0 (hex):
ierr = ex_put_elem_block(exid, 1, "hex", 1, 8, 0);
assert(ierr == 0);
// block 1 (pyramid):
ierr = ex_put_elem_block(exid, 10, "pyramid", 1, 5, 0);
assert(ierr == 0);
// block 2 (tet):
ierr = ex_put_elem_block(exid, 100, "tet", 1, 4, 0);
assert(ierr == 0);
// block 3 (wedge):
ierr = ex_put_elem_block(exid, 1000, "wedge", 1, 6, 0);
assert(ierr == 0);
// connectivity:
ierr = ex_put_elem_conn(exid, 1, elements_1);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 10, elements_2);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 100, elements_3);
assert(ierr == 0);
ierr = ex_put_elem_conn(exid, 1000, elements_4);
assert(ierr == 0);
// side sets:
ierr = ex_put_side_set_param(exid, 1, 5, 0);
assert(ierr == 0);
int sideset_1_elems[] = {1, 1, 2, 3, 4};
int sideset_1_sides[] = {1, 5, 1, 1, 1};
ierr = ex_put_side_set(exid, 1, sideset_1_elems, sideset_1_sides);
assert(ierr == 0);
ierr = ex_put_side_set_param(exid, 2, 3, 0);
assert(ierr == 0);
int sideset_2_elems[] = {1, 3, 4};
int sideset_2_sides[] = {2, 2, 2};
ierr = ex_put_side_set(exid, 2, sideset_2_elems, sideset_2_sides);
assert(ierr == 0);
ierr = ex_put_side_set_param(exid, 3, 3, 0);
assert(ierr == 0);
int sideset_3_elems[] = {1, 2, 4};
int sideset_3_sides[] = {3, 3, 3};
ierr = ex_put_side_set(exid, 3, sideset_3_elems, sideset_3_sides);
assert(ierr == 0);
ierr = ex_put_side_set_param(exid, 4, 2, 0);
assert(ierr == 0);
int sideset_4_elems[] = {1, 2};
int sideset_4_sides[] = {4, 4};
ierr = ex_put_side_set(exid, 4, sideset_4_elems, sideset_4_sides);
assert(ierr == 0);
ierr = ex_put_side_set_param(exid, 5, 4, 0);
assert(ierr == 0);
int sideset_5_elems[] = {1, 1, 2, 4};
int sideset_5_sides[] = {4, 5, 4, 5};
ierr = ex_put_side_set(exid, 5, sideset_5_elems, sideset_5_sides);
assert(ierr == 0);
ierr = ex_close(exid);
assert(ierr == 0);
}
Marc Fehling [Tue, 3 Nov 2020 01:53:06 +0000 (18:53 -0700)]
Functions of hp::Refinement now only available for DoFHandler in hp mode.
Mathias Anselmann [Tue, 10 Nov 2020 18:11:10 +0000 (19:11 +0100)]
parallel running version of multigrid Cuthill McKee reordering
Peter Munch [Tue, 10 Nov 2020 11:54:45 +0000 (12:54 +0100)]
Improve VectorDataExchange::Full::reset_ghost_values
Peter Munch [Tue, 10 Nov 2020 16:23:15 +0000 (17:23 +0100)]
Fix fe_face_evaluation_process_and_io for multiple components
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.