]> https://gitweb.dealii.org/ - dealii.git/log
dealii.git
3 years agoMerge pull request #11188 from peterrum/FEEvaluationImpl_tensor_none
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

3 years agoMerge pull request #11186 from peterrum/shape_info_simplex
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

3 years agoMerge pull request #11193 from bangerth/fe-values
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.

3 years agoMake FEEvaluationImpl work for ElementType::tensor_none 11188/head
Peter Munch [Sun, 15 Nov 2020 16:57:46 +0000 (17:57 +0100)]
Make FEEvaluationImpl work for ElementType::tensor_none

3 years agoMake ShapeInfo compatible with Simplex::FE_P and Simplex::QGauss 11186/head
Peter Munch [Sun, 15 Nov 2020 09:12:40 +0000 (10:12 +0100)]
Make ShapeInfo compatible with Simplex::FE_P and Simplex::QGauss

3 years agoMerge pull request #11177 from peterrum/feevaluation_assert_verbose
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

3 years agoMerge pull request #11192 from bangerth/notation
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.

3 years agoBetter document a bunch of functions. 11193/head
Wolfgang Bangerth [Tue, 17 Nov 2020 01:00:45 +0000 (18:00 -0700)]
Better document a bunch of functions.

3 years agoUse upper-case letters for vectors in the documentation. 11192/head
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.

3 years agoMerge pull request #11171 from marcfehling/deprecate-hpdofhandler
Peter Munch [Mon, 16 Nov 2020 21:16:00 +0000 (22:16 +0100)]
Merge pull request #11171 from marcfehling/deprecate-hpdofhandler

Deprecate hp::DoFHandler.

3 years agoPrefer basic DoFHandler over deprecated hp::DoFHandler. 11171/head
Marc Fehling [Fri, 13 Nov 2020 02:40:20 +0000 (19:40 -0700)]
Prefer basic DoFHandler over deprecated hp::DoFHandler.

3 years agoDeprecate 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.

3 years agoMerge pull request #11187 from peterrum/step-67-typo
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

3 years agoFix typo in step 67 11187/head
Peter Munch [Sun, 15 Nov 2020 15:35:01 +0000 (16:35 +0100)]
Fix typo in step 67

3 years agoMake assert more verbose in FEEvaluation 11177/head
Peter Munch [Thu, 12 Nov 2020 15:51:22 +0000 (16:51 +0100)]
Make assert more verbose in FEEvaluation

3 years agoMerge pull request #11184 from kronbichler/clean_up_macro_cell
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

3 years agoMerge pull request #11182 from marcfehling/rm-dhtype-dataentry
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}.

3 years agoAvoid name macro_cell in matrix-free implementation 11184/head
Martin Kronbichler [Sat, 14 Nov 2020 11:50:08 +0000 (12:50 +0100)]
Avoid name macro_cell in matrix-free implementation

3 years agoMerge pull request #11183 from tjhei/mf_deprecate_macro_cells
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

3 years agoMerge pull request #11181 from marcfehling/deprecate-mf-get_dof_handler
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.

3 years agoDeprecate MatrixFree::get_dof_handler. 11181/head
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.

3 years agoMatrixFree: deprecate n_macro_cells 11183/head
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.

3 years agoRemove DoFHandlerType from internal::DataOutImplementation::{DataEntryBase|DataEntry... 11182/head
Marc Fehling [Sat, 14 Nov 2020 02:31:36 +0000 (19:31 -0700)]
Remove DoFHandlerType from internal::DataOutImplementation::{DataEntryBase|DataEntry|MGDataEntry}.

3 years agoMerge pull request #11180 from peterrum/mpicomm_missing_reference
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 &

3 years agoMerge pull request #11128 from jppelteret/ad_helper_bug_fix_01
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

3 years agoAdd missing const MPI_Comm & 11180/head
Peter Munch [Fri, 13 Nov 2020 19:10:58 +0000 (20:10 +0100)]
Add missing const MPI_Comm &

3 years agoMerge pull request #11168 from peterrum/mf_quadrature_dim
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

3 years agoMerge pull request #11176 from peterrum/qcollection_1D
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>

3 years agoMerge pull request #11169 from peterrum/mf_reinit_mapping_default_mapping
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

3 years agoDeprecate MatrixFree::reinit() functions with default Mapping argument 11169/head
Peter Munch [Wed, 11 Nov 2020 22:11:17 +0000 (23:11 +0100)]
Deprecate MatrixFree::reinit() functions with default Mapping argument

3 years agoMake MatrixFree compile for arbitrary dim quadrature rules 11168/head
Peter Munch [Thu, 12 Nov 2020 13:01:23 +0000 (14:01 +0100)]
Make MatrixFree compile for arbitrary dim quadrature rules

3 years agoMerge pull request #11179 from peterrum/step37-update-docu
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

3 years agoMerge pull request #11159 from mathsen/mg_parallel_Cuthill_Mc_Kee
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

3 years agoMerge pull request #11163 from peterrum/particles_partitioner
Martin Kronbichler [Fri, 13 Nov 2020 08:31:29 +0000 (09:31 +0100)]
Merge pull request #11163 from peterrum/particles_partitioner

Move GhostParticlePartitioner

3 years agoStep-37: small update to the documentation 11179/head
Peter Munch [Fri, 13 Nov 2020 08:14:53 +0000 (09:14 +0100)]
Step-37: small update to the documentation

3 years agoAdded a changelog 11128/head
Jean-Paul Pelteret [Thu, 12 Nov 2020 22:14:08 +0000 (23:14 +0100)]
Added a changelog

3 years agoMerge pull request #11175 from peterrum/fix_type_pdt
Timo Heister [Thu, 12 Nov 2020 13:06:07 +0000 (08:06 -0500)]
Merge pull request #11175 from peterrum/fix_type_pdt

Fix typo

3 years agoQCollection<dim> accept Quadrature<1> 11176/head
Peter Munch [Thu, 12 Nov 2020 11:49:51 +0000 (12:49 +0100)]
QCollection<dim> accept Quadrature<1>

3 years agoFix typo 11175/head
Peter Munch [Thu, 12 Nov 2020 11:17:25 +0000 (12:17 +0100)]
Fix typo

3 years agoMove GhostParticlePartitioner 11163/head
Peter Munch [Wed, 11 Nov 2020 17:25:30 +0000 (18:25 +0100)]
Move GhostParticlePartitioner

3 years agoMerge pull request #11170 from marcfehling/deprecate-feoperator
Martin Kronbichler [Thu, 12 Nov 2020 08:42:15 +0000 (09:42 +0100)]
Merge pull request #11170 from marcfehling/deprecate-feoperator

Deprecated FiniteElement::operator[].

3 years agoDeprecated FiniteElement::operator[]. 11170/head
Marc Fehling [Thu, 12 Nov 2020 02:37:05 +0000 (19:37 -0700)]
Deprecated FiniteElement::operator[].

3 years agoMerge pull request #11164 from peterrum/DEAL_II_MPI_VERSION_GTE
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

3 years agoMerge pull request #11165 from mschreter/fe_evaluation_fix_comment
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"

3 years agofix typo in class documentation of FEEvaluation 11165/head
Magdalena Schreter [Wed, 11 Nov 2020 19:40:15 +0000 (20:40 +0100)]
fix typo in class documentation of FEEvaluation

3 years agoDefine DEAL_II_MPI_VERSION_GTE also for serial compilation 11164/head
Peter Munch [Wed, 11 Nov 2020 17:35:14 +0000 (18:35 +0100)]
Define DEAL_II_MPI_VERSION_GTE also for serial compilation

3 years agoMerge pull request #11161 from marcfehling/hp-refinement
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.

3 years agoMerge pull request #10899 from drwells/gridin-exodusii
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

3 years agoMerge pull request #11162 from peterrum/step67-skew-ref
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

3 years agoAdded test for extract_locally_active_level_dofs and applied changes proposed by... 11159/head
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

3 years agoMerge pull request #11156 from peterrum/reset_ghost_values_impl
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

3 years agoMerge pull request #11154 from peterrum/compute_shared_memory_contiguous_indices_fix
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

3 years agoMerge pull request #11157 from peterrum/fe_face_evaluation_process_and_io_comp_fix
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

3 years agoMerge pull request #11152 from lethe-cfd/update_ghost_particles_part_2
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

3 years agoMerge pull request #11133 from marcfehling/slim-dofhandler-init
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.

3 years agoAdd reference to skew-symmetric implementation in step-67 11162/head
Peter Munch [Wed, 11 Nov 2020 10:09:33 +0000 (11:09 +0100)]
Add reference to skew-symmetric implementation in step-67

3 years agosave a copy of the locally owned DoFs IndexSet and use a reference instead
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

3 years agoapplied proposed changes by masterleinad
Mathias Anselmann [Tue, 10 Nov 2020 23:24:22 +0000 (00:24 +0100)]
applied proposed changes by masterleinad

3 years agoRework DoFHandler connections to underlying Triangulation. 11133/head
Marc Fehling [Tue, 3 Nov 2020 01:56:29 +0000 (18:56 -0700)]
Rework DoFHandler connections to underlying Triangulation.

3 years agoIntroduction of ghost particles cache and new version to send 11152/head
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

3 years agoImplement ExodusII in GridIn. 10899/head
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);
}

3 years agoFunctions of hp::Refinement now only available for DoFHandler in hp mode. 11161/head
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.

3 years agoparallel running version of multigrid Cuthill McKee reordering
Mathias Anselmann [Tue, 10 Nov 2020 18:11:10 +0000 (19:11 +0100)]
parallel running version of multigrid Cuthill McKee reordering

3 years agoImprove VectorDataExchange::Full::reset_ghost_values 11156/head
Peter Munch [Tue, 10 Nov 2020 11:54:45 +0000 (12:54 +0100)]
Improve VectorDataExchange::Full::reset_ghost_values

3 years agoFix fe_face_evaluation_process_and_io for multiple components 11157/head
Peter Munch [Tue, 10 Nov 2020 16:23:15 +0000 (17:23 +0100)]
Fix fe_face_evaluation_process_and_io for multiple components

3 years agoMove n_vertices_to_type to reference_cell.h
David Wells [Tue, 27 Oct 2020 15:31:01 +0000 (11:31 -0400)]
Move n_vertices_to_type to reference_cell.h

3 years agoCheck for SEACAS support.
David Wells [Thu, 3 Sep 2020 16:58:01 +0000 (12:58 -0400)]
Check for SEACAS support.

We need it for ExodusII.

3 years agoMerge pull request #11151 from peterrum/SolverCGSM
Martin Kronbichler [Tue, 10 Nov 2020 08:12:22 +0000 (09:12 +0100)]
Merge pull request #11151 from peterrum/SolverCGSM

Fix sm-mode L:d:V for zero sized vectors

3 years agoMerge pull request #11109 from tjhei/mpi_comm_ref
David Wells [Sat, 7 Nov 2020 17:42:48 +0000 (12:42 -0500)]
Merge pull request #11109 from tjhei/mpi_comm_ref

pass MPI_Comm by const ref

3 years agoFix compute_shared_memory_contiguous_indices 11154/head
Peter Munch [Sat, 7 Nov 2020 17:22:50 +0000 (18:22 +0100)]
Fix compute_shared_memory_contiguous_indices

3 years agoFix SolverCG for sm-mode L:d:V 11151/head
Peter Munch [Fri, 6 Nov 2020 09:29:27 +0000 (10:29 +0100)]
Fix SolverCG for sm-mode L:d:V

3 years agoMerge pull request #11150 from peterrum/mpi_processes_within_communicator_use
David Wells [Fri, 6 Nov 2020 14:11:18 +0000 (09:11 -0500)]
Merge pull request #11150 from peterrum/mpi_processes_within_communicator_use

Use mpi_processes_within_communicator

3 years agoUse mpi_processes_within_communicator 11150/head
Peter Munch [Fri, 6 Nov 2020 08:05:54 +0000 (09:05 +0100)]
Use mpi_processes_within_communicator

3 years agoMerge pull request #11097 from peterrum/dof_indices_contiguous_sm_io
Peter Munch [Fri, 6 Nov 2020 07:21:34 +0000 (08:21 +0100)]
Merge pull request #11097 from peterrum/dof_indices_contiguous_sm_io

Use dof_indices_contiguous_sm in evaluation functions

3 years agoMerge pull request #11145 from mathsen/multigrid_inh_boundary_conditions
Timo Heister [Fri, 6 Nov 2020 02:21:24 +0000 (21:21 -0500)]
Merge pull request #11145 from mathsen/multigrid_inh_boundary_conditions

Adjusted mg_constrained_dofs for usage of own IndexSets

3 years agoMerge pull request #11131 from tamiko/add_a_test
Matthias Maier [Fri, 6 Nov 2020 01:12:39 +0000 (19:12 -0600)]
Merge pull request #11131 from tamiko/add_a_test

Transfinite interpolation: add a test

3 years agoindent 11131/head
Matthias Maier [Thu, 5 Nov 2020 21:46:18 +0000 (15:46 -0600)]
indent

3 years agoMerge pull request #11141 from peterrum/ImplementationMixedMesh
David Wells [Thu, 5 Nov 2020 21:03:46 +0000 (16:03 -0500)]
Merge pull request #11141 from peterrum/ImplementationMixedMesh

Add internal::TriangulationImplementation::ImplementationMixedMesh

3 years agoUpdate tests/manifold/transfinite_manifold_11.cc
Matthias Maier [Thu, 5 Nov 2020 19:40:40 +0000 (13:40 -0600)]
Update tests/manifold/transfinite_manifold_11.cc

Co-authored-by: Martin Kronbichler <kronbichler@lnm.mw.tum.de>
3 years agoDifferent fixes 11097/head
Peter Munch [Sun, 25 Oct 2020 20:21:54 +0000 (21:21 +0100)]
Different fixes

3 years agoMerge pull request #11147 from peterrum/simplify_categorize_by_boundary_ids
Martin Kronbichler [Thu, 5 Nov 2020 19:23:58 +0000 (20:23 +0100)]
Merge pull request #11147 from peterrum/simplify_categorize_by_boundary_ids

Simplify simplify_categorize_by_boundary_ids

3 years agoSimplify simplify_categorize_by_boundary_ids 11147/head
Peter Munch [Thu, 5 Nov 2020 14:38:49 +0000 (15:38 +0100)]
Simplify simplify_categorize_by_boundary_ids

3 years agoadded proposed changes 11145/head
Mathias Anselmann [Thu, 5 Nov 2020 12:52:41 +0000 (13:52 +0100)]
added proposed changes

3 years agoMerge pull request #11134 from luca-heltai/bug-anisotropic
Martin Kronbichler [Thu, 5 Nov 2020 09:57:35 +0000 (10:57 +0100)]
Merge pull request #11134 from luca-heltai/bug-anisotropic

Expose mesh loop bug for anisotropic grids.

3 years agoAdd internal::TriangulationImplementation::ImplementationMixedMesh 11141/head
Peter Munch [Wed, 4 Nov 2020 09:20:34 +0000 (10:20 +0100)]
Add internal::TriangulationImplementation::ImplementationMixedMesh

3 years agoMerge pull request #11140 from peterrum/tria_reference_type
David Wells [Wed, 4 Nov 2020 22:27:10 +0000 (17:27 -0500)]
Merge pull request #11140 from peterrum/tria_reference_type

Store reference_cell_types in Triangulation

3 years agounified both initialize() functions into one with default second argument
Mathias Anselmann [Wed, 4 Nov 2020 21:03:15 +0000 (22:03 +0100)]
unified both initialize() functions into one with default second argument

3 years agoMerge pull request #11143 from tjhei/step_7_double
Martin Kronbichler [Wed, 4 Nov 2020 20:33:13 +0000 (21:33 +0100)]
Merge pull request #11143 from tjhei/step_7_double

step-7: mark some ints as doubles

3 years agoMerge pull request #11144 from drwells/class-to-function
Wolfgang Bangerth [Wed, 4 Nov 2020 18:04:40 +0000 (11:04 -0700)]
Merge pull request #11144 from drwells/class-to-function

Label functions as such (and not as classes).

3 years agoAdjusted mg_constrained_dofs for usage of own IndexSet, so that the user can add...
Mathias Anselmann [Tue, 3 Nov 2020 11:51:59 +0000 (12:51 +0100)]
Adjusted mg_constrained_dofs for usage of own IndexSet, so that the user can add additional constrained DoFs to the MGConstrainedDoFs class.

3 years agoLabel functions as such (and not as classes). 11144/head
David Wells [Wed, 4 Nov 2020 15:44:56 +0000 (10:44 -0500)]
Label functions as such (and not as classes).

3 years agostep-7: mark some ints as doubles 11143/head
Timo Heister [Wed, 4 Nov 2020 13:44:16 +0000 (08:44 -0500)]
step-7: mark some ints as doubles

3 years agoStore reference_types in Triangulation 11140/head
Peter Munch [Tue, 3 Nov 2020 22:11:34 +0000 (23:11 +0100)]
Store reference_types in Triangulation

3 years agoMerge pull request #11139 from bangerth/invalid
Peter Munch [Wed, 4 Nov 2020 08:30:56 +0000 (09:30 +0100)]
Merge pull request #11139 from bangerth/invalid

Avoid the use of 'illegal' in error messages.

3 years agoMerge pull request #11123 from marcfehling/hp-capability-enabled
Peter Munch [Wed, 4 Nov 2020 05:34:40 +0000 (06:34 +0100)]
Merge pull request #11123 from marcfehling/hp-capability-enabled

Hide hp_capability_enabled parameter.

3 years agoTransfiniteInterpolation: also print point in test
Matthias Maier [Tue, 3 Nov 2020 14:32:43 +0000 (08:32 -0600)]
TransfiniteInterpolation: also print point in test

3 years agoTransfinite interpolation: add a test
Matthias Maier [Mon, 2 Nov 2020 23:16:11 +0000 (17:16 -0600)]
Transfinite interpolation: add a test

3 years agoAvoid the use of 'illegal' in error messages. 11139/head
Wolfgang Bangerth [Tue, 3 Nov 2020 20:13:06 +0000 (13:13 -0700)]
Avoid the use of 'illegal' in error messages.

There is nothing against the law anyone is trying to do, it's just not a
valid operation.

3 years agoMerge pull request #11137 from peterrum/mpi_processes_within_communicator
Martin Kronbichler [Tue, 3 Nov 2020 19:18:25 +0000 (20:18 +0100)]
Merge pull request #11137 from peterrum/mpi_processes_within_communicator

Introduce Utilities::MPI::mpi_processes_within_communicator

3 years agoMerge pull request #11136 from peterrum/initialize_indices_global_active_cell_index
Martin Kronbichler [Tue, 3 Nov 2020 19:18:09 +0000 (20:18 +0100)]
Merge pull request #11136 from peterrum/initialize_indices_global_active_cell_index

Use global_active_cell_index in MatrixFree::initialize_indices


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.