]> https://gitweb.dealii.org/ - dealii.git/log
dealii.git
3 years agoImprove the documentation of a couple of AffineConstraints functions.
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.

3 years agoMerge pull request #11205 from masterleinad/avoid_printing_osx_ci_gcc
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

3 years agoMerge pull request #11203 from drwells/mf-simplex-permitted-list
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.

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

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

3 years agoImprove MGTransferMatrixFree::interpolate_to_mg 11202/head
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.

3 years agoAdd particle update data function to overwrite particle information without recreatin... 11199/head
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>
3 years agoAvoid printing gcc information in OSX CI 11205/head
Daniel Arndt [Wed, 18 Nov 2020 22:36:06 +0000 (17:36 -0500)]
Avoid printing gcc information in OSX CI

3 years agoAdd simplex elements to the MF permitted list. 11203/head
David Wells [Wed, 18 Nov 2020 22:04:43 +0000 (17:04 -0500)]
Add simplex elements to the MF permitted list.

3 years agoMerge pull request #11200 from luca-heltai/fix-github
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.

3 years agoChange to gcc-10. 11200/head
Luca Heltai [Wed, 18 Nov 2020 17:53:57 +0000 (18:53 +0100)]
Change to gcc-10.

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

3 years agoActually use ShapeInfo for Simplex::FE_P and Simplex::QGauss 11196/head
Peter Munch [Tue, 17 Nov 2020 18:50:16 +0000 (19:50 +0100)]
Actually use ShapeInfo for Simplex::FE_P and Simplex::QGauss

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

3 years agoMerge pull request #11160 from marcfehling/deprecate_dofhandler_init
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.

3 years agoMerge pull request #11189 from marcfehling/deprecate-ci-getset_cell
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.

3 years agoAvoid using deprecated DoFHandler functions in examples. 11160/head
Marc Fehling [Tue, 3 Nov 2020 02:03:07 +0000 (19:03 -0700)]
Avoid using deprecated DoFHandler functions in examples.

3 years agoAvoid using deprecated DoFHandler functions in source.
Marc Fehling [Tue, 10 Nov 2020 21:30:14 +0000 (14:30 -0700)]
Avoid using deprecated DoFHandler functions in source.

3 years agoSlim interface for DoFHandler initialization.
Marc Fehling [Tue, 3 Nov 2020 01:51:36 +0000 (18:51 -0700)]
Slim interface for DoFHandler initialization.

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 agoDeprecate DataPostprocessorInputs::CommonInputs::{get|set}_cell. 11189/head
Marc Fehling [Tue, 10 Nov 2020 19:50:33 +0000 (12:50 -0700)]
Deprecate DataPostprocessorInputs::CommonInputs::{get|set}_cell.

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 some FEValues functions. 11194/head
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'.

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>

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.