]> https://gitweb.dealii.org/ - dealii.git/log
dealii.git
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 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

4 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

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

4 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.

4 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

4 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);
}

4 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.

4 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

4 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

4 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

4 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

4 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.

4 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

4 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

4 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

4 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

4 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

4 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

4 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

4 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

4 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

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

4 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

4 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>
4 years agoDifferent fixes 11097/head
Peter Munch [Sun, 25 Oct 2020 20:21:54 +0000 (21:21 +0100)]
Different fixes

4 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

4 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

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

4 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.

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

4 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

4 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

4 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

4 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).

4 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.

4 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).

4 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

4 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

4 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.

4 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.

4 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

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

4 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.

4 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

4 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

4 years agoMerge pull request #11135 from peterrum/global_active_cell_index_comments
Martin Kronbichler [Tue, 3 Nov 2020 16:55:17 +0000 (17:55 +0100)]
Merge pull request #11135 from peterrum/global_active_cell_index_comments

Extend docu on global_active_cell_index

4 years agoMerge pull request #11098 from peterrum/vde_full
David Wells [Tue, 3 Nov 2020 16:40:17 +0000 (11:40 -0500)]
Merge pull request #11098 from peterrum/vde_full

Introduce VectorDataExchange::Full

4 years agoMerge pull request #11125 from lethe-cfd/update_ghost_particles
Martin Kronbichler [Tue, 3 Nov 2020 15:45:29 +0000 (16:45 +0100)]
Merge pull request #11125 from lethe-cfd/update_ghost_particles

Update ghost particles without rebuilding them

4 years agoIntroduce Utilities::MPI::mpi_processes_within_communicator 11137/head
Peter Munch [Tue, 3 Nov 2020 13:44:23 +0000 (14:44 +0100)]
Introduce Utilities::MPI::mpi_processes_within_communicator

4 years agoExpose mesh loop bug for anisotropic grids. 11134/head
Luca Heltai [Tue, 3 Nov 2020 09:33:55 +0000 (10:33 +0100)]
Expose mesh loop bug for anisotropic grids.

4 years agoUse global_active_cell_index in MatrixFree::initialize_indices 11136/head
Peter Munch [Tue, 3 Nov 2020 13:20:51 +0000 (14:20 +0100)]
Use global_active_cell_index in MatrixFree::initialize_indices

4 years agoExtend docu on global_active_cell_index 11135/head
Peter Munch [Tue, 3 Nov 2020 11:21:26 +0000 (12:21 +0100)]
Extend docu on global_active_cell_index

4 years agoIntroduce VectorDataExchange::Full and introduce 2nd communicator in MatrixFree 11098/head
Peter Munch [Sat, 24 Oct 2020 15:42:39 +0000 (17:42 +0200)]
Introduce VectorDataExchange::Full and introduce 2nd communicator in MatrixFree

4 years agoMerge pull request #11092 from peterrum/dof_indices_contiguous_sm
Martin Kronbichler [Tue, 3 Nov 2020 11:53:23 +0000 (12:53 +0100)]
Merge pull request #11092 from peterrum/dof_indices_contiguous_sm

MatrixFree: add DoFInfo::dof_indices_contiguous_sm

4 years agoMerge pull request #11103 from peterrum/simplex_q_gauss_1D
Martin Kronbichler [Tue, 3 Nov 2020 10:59:22 +0000 (11:59 +0100)]
Merge pull request #11103 from peterrum/simplex_q_gauss_1D

Pass n_q_points_1D to Simplex::QGauss

4 years agoMerge pull request #10490 from peterrum/cell_global_id
Martin Kronbichler [Tue, 3 Nov 2020 10:48:57 +0000 (11:48 +0100)]
Merge pull request #10490 from peterrum/cell_global_id

Give each cell a globally unique (level) ID

4 years agoMatrixFree: add DoFInfo::dof_indices_contiguous_sm 11092/head
Peter Munch [Fri, 23 Oct 2020 11:58:33 +0000 (13:58 +0200)]
MatrixFree: add DoFInfo::dof_indices_contiguous_sm

4 years agoMerge pull request #11126 from kronbichler/fix_transfinite_jacobian
Martin Kronbichler [Tue, 3 Nov 2020 08:00:33 +0000 (09:00 +0100)]
Merge pull request #11126 from kronbichler/fix_transfinite_jacobian

Transfinite interpolation: Fix refresh of Jacobian


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.