| #
171f813e
|
| 15-Feb-2017 |
Toby Isaac <tisaac@uchicago.edu> |
Merge remote-tracking branch 'origin/knepley/feature-fe-dual-apply' into tisaac/feature-fe-dual-apply
* origin/knepley/feature-fe-dual-apply: (75 commits) Plex: Screwed up last fix Plex: Fix ove
Merge remote-tracking branch 'origin/knepley/feature-fe-dual-apply' into tisaac/feature-fe-dual-apply
* origin/knepley/feature-fe-dual-apply: (75 commits) Plex: Screwed up last fix Plex: Fix overeager protection of function PetscFE: Fixed declaration Travis-CI: Attempt to solve issues with gfortran Travis-CI: Use newer macOS image clarify damping and other issues related to SNESLINESEARCHBASIC change example in new harness to use simple partitioner so gets consistent output on all systems remove unused function from test file cleanup formatting in example, plus myrank not rank all requires need to go on the same line in test definition otherwise they are skipped missing - makes the manual page formatting wrong The developer manual clearly states that MPI_Comm_size() returns size it doesn't return numProcs or other nonsense. Pretty soon you'll start using mype instead of rank? fix typo and cut and paste error in docs bugfix for !HYPRE fix warning for ';;' may switch to scalable only when B->cmap->N > 100000 MatLRC: store in the context the parallel matrices rather than the sequential ones Bib: Add ref set default algorithm based on B->cmap->N for MatMatMult_MPIAIJ_MPIAIJ() Error in VecScatterView_MPI() had the meaning of from and to backwards ...
show more ...
|
| #
476ae45a
|
| 14-Feb-2017 |
Matthew G. Knepley <knepley@gmail.com> |
Plex: Screwed up last fix
|
| #
55b905e8
|
| 14-Feb-2017 |
Matthew G. Knepley <knepley@gmail.com> |
PetscFE: Fixed declaration
|
| #
9c3cf19f
|
| 09-Feb-2017 |
Matthew G. Knepley <knepley@gmail.com> |
PetscFE+FV: Now discretization can be vector spaces - Space and DualSpace have a number of components - Now the dimension of a space incorporates the components, so all size determinations changed -
PetscFE+FV: Now discretization can be vector spaces - Space and DualSpace have a number of components - Now the dimension of a space incorporates the components, so all size determinations changed - The default is to form direct sums of scalar spaces, e.g. for constants (1, 0) and (0, 1) so every basis vector is a vector with only one component nonzero - DualSpaceApply() is now handled by the implementation - FE now uses numDof directly from the DualSpace - Changed SpaceDG --> SpacePoint - Updated ex3 tests (DA and p4est is still broken)
show more ...
|
| #
e51df6f4
|
| 09-Nov-2016 |
stefano_zampini <stefano.zampini@gmail.com> |
Merge branch 'master' into stefano_zampini/feature-pcbddc-saddlepoint
This is needed to deal with some changes in MatNullSpace from commit 9d2471e
|
| #
10c1f87b
|
| 27-Oct-2016 |
Toby Isaac <tisaac@uchicago.edu> |
Merge branch 'master' into tisaac/dmplex-feature-real-to-ref
I need updated PetscFE interfaces in what I'm going to do
* master: (603 commits) parmetis: fix typo in testsuite Added PETSC_HAVE_A
Merge branch 'master' into tisaac/dmplex-feature-real-to-ref
I need updated PetscFE interfaces in what I'm going to do
* master: (603 commits) parmetis: fix typo in testsuite Added PETSC_HAVE_ATTRIBUTEALIGNED flag to makefile PCSetUp_SVD() used incorrect matrix for matrix size in parallel, also need to skip LAPACK call if matrix size is zero strumpack: update to latest version 1.0.4 Remove valgrind warning about MPI_Allreduce() with uninitialized data sed for test output that has atol convergence with quad precision updated ex1_nest tests fixed incorrect key value fix: bad merge a69d34a test: move runex78 to TESTEXAMPLES_C_NOTSINGLE build: fix warnings sys: update test to produce same result - irrespective of debug/opt build - and presence of ~/.petscrc sys: src/sys/examples/tests/ex30.c -> src/sys/examples/tests/ex32.c to avoid conflict in master Sed output, since quad precision reduces below atol on these tests remove automatically generated matrix names from test output files since can be different Fixes for MatMPIXXXSetPreallocation(), they were not reentrant, since they kept the information used for matrix-vector products GAMG: fix PCView_GAMG() format - and update output/ex56_0.out superlu_dist: 64-bit-indices fix https://github.com/xiaoyeli/superlu_dist/issues/4 Add SNESSetDivergenceTolerance / -snes_divergence_tolerance. fixed unit read in Plex ...
show more ...
|
| #
66b078fb
|
| 26-Oct-2016 |
Matthew G. Knepley <knepley@gmail.com> |
Merge branch 'knepley/feature-plex-bdfunc'
* knepley/feature-plex-bdfunc: (56 commits) updated snes/ex56 updated snes/ex56 Plex: Goddamn it! Shadowing a variable name PetscDS: Must be setup
Merge branch 'knepley/feature-plex-bdfunc'
* knepley/feature-plex-bdfunc: (56 commits) updated snes/ex56 updated snes/ex56 Plex: Goddamn it! Shadowing a variable name PetscDS: Must be setup in order to access field sizes and components fix bad merge 44ac993612e1ca111ab14eba1c22039e0ba32a12 wrt src/snes/examples/tutorials/ex56.c [by attempting to redo the merge with kdiff3 - and then comparing the final result with the result in the above merge] fixed snes/ex56 for PetscDSAddBoundary change dmplexsnes: Remove more unused variables Remove unused variables SNES ex77: Must also set face quadrature SNES ex12: No longer need boundary discretization orders SNES ex62: Numerical flutter SNES ex12: Numerical flutter Plex: In projection, get Nc from DS instead of calculating it again PetscFE: Added missing destroy SNEX ex77: Update boundary args and FE creation Plex: Update boundary integrals to new API SNES ex12: Tests of bc from fields SNES ex12: Added the ability to use finite element fields as boundary conditions Plex: Need invJ for field projection Plex: Fix bug with field projection - We must tabulate the FE on the dual basis quadrature points ...
show more ...
|
| #
e923053f
|
| 15-Oct-2016 |
stefano_zampini <stefano.zampini@gmail.com> |
Merge branch 'stefano_zampini/feature-convert-matnest-matis' into stefano_zampini/feature-pcbddc-saddlepoint
I have to merge it here, since there's an API addition for MatIS in stefano_zampini/featu
Merge branch 'stefano_zampini/feature-convert-matnest-matis' into stefano_zampini/feature-pcbddc-saddlepoint
I have to merge it here, since there's an API addition for MatIS in stefano_zampini/feature-pcbddc-saddlepoint that prevents me to smoothly merge stefano_zampini/feature-convert-matnest-matis into next.
This will also facilitate merging stefano_zampini/feature-pcbddc-saddlepoint into master
Conflicts: src/docs/website/documentation/changes/dev.html
show more ...
|
| #
44ac9936
|
| 06-Oct-2016 |
Matthew G. Knepley <knepley@gmail.com> |
Merge branch 'pr566/knepley/plex_bd_aux_field/master' into knepley/feature-plex-bdfunc
* pr566/knepley/plex_bd_aux_field/master: (22 commits) PetscDS: reset max nr values for PetscOptionsIntArray(
Merge branch 'pr566/knepley/plex_bd_aux_field/master' into knepley/feature-plex-bdfunc
* pr566/knepley/plex_bd_aux_field/master: (22 commits) PetscDS: reset max nr values for PetscOptionsIntArray() SNES+Plex: dm was destroyed too early Plex: use tabulation based on quadrature points of dual space, not the default tabulation in DMProjectFieldLocal() SNES ex77: remove zero pointwise functions PetscFE: only transform pointwise function if it is present PetscDS: get rid of boundary discretizations SNES ex77: update test SNES ex77: simplify residuals/jacobians and delete unnecessary variables and functions SNES+Plex: use all cell values to interpolate to face PetscFE: add face quadrature and tabulation PetscDS: cache number of components and dimensions of discretization space in PetscDS object SNES ex77: simplify pointwise residual and jacobian for deformation SNES ex77: move specifications of boundary conditions to command line options SNES ex77: use auxiliary field for wall pressure SNES+Plex: allow auxiliary fields in boundary residual/jacobian calculations PetscDS: get rid of initialization with PetscContainer SNES+Plex: move boundary jacobian calculation into seperate function SNES ex77: remove BdResidual for pressure field SNES+Plex: remove unnecessary (and wrong) loop in boundary residual/jacobian calculations SNES+Plex: change DMGetField to PetscDSGetBdDiscretization in residual and jacobian calculation ...
Conflicts: include/petsc/private/petscfeimpl.h src/dm/dt/interface/dtfe.c src/dm/impls/plex/plexfem.c src/snes/examples/tutorials/ex56.c src/snes/examples/tutorials/ex77.c src/snes/examples/tutorials/output/ex77_0.out src/snes/utils/dmplexsnes.c
show more ...
|
| #
4d0b9603
|
| 13-Sep-2016 |
Sander Arens <sanderarens@gmail.com> |
SNES+Plex: use all cell values to interpolate to face
Previously the boundary residual/jacobian routines interpolated to face quadrature points by taking the closure of those faces and using a separ
SNES+Plex: use all cell values to interpolate to face
Previously the boundary residual/jacobian routines interpolated to face quadrature points by taking the closure of those faces and using a separate boundary discretization. This only worked if there were dofs on faces and the discretization order of the cell and boundary were the same. Inverse element jacobians are now calculated from adjacent cells to also have information on normal derivatives.
show more ...
|
| #
1bafc85d
|
| 07-Sep-2016 |
Sander Arens <sanderarens@gmail.com> |
PetscFE: add face quadrature and tabulation
|
| #
54761ea3
|
| 14-Aug-2016 |
Barry Smith <bsmith@mcs.anl.gov> |
Merge branch 'master' into barry/fix-successful-numerical-factorization-after-failure/master
The maint patch for the given problem cannot merge cleanly into next due to changes in the same code in m
Merge branch 'master' into barry/fix-successful-numerical-factorization-after-failure/master
The maint patch for the given problem cannot merge cleanly into next due to changes in the same code in master (the introduction of MatFactorGetError()) therefor need to merge in master and use the new construct before merging to next
show more ...
|
| #
162a9882
|
| 11-Aug-2016 |
Patrick Sanan <patrick.sanan@gmail.com> |
Merge branch 'master' into psanan/pc-telescope-nearnullspace
|
| #
011b787b
|
| 05-Aug-2016 |
Mark Adams <mfadams@lbl.gov> |
fixed merge with master
|
| #
1d45022f
|
| 04-Aug-2016 |
Toby Isaac <tisaac@uchicago.edu> |
Merge branch 'tisaac/dualspace-feature-symmetry'
In finite element assembly, to compute a residual or assemble a Jacobian on an element, the dual space functionals of a reference finite element are
Merge branch 'tisaac/dualspace-feature-symmetry'
In finite element assembly, to compute a residual or assemble a Jacobian on an element, the dual space functionals of a reference finite element are related (i.e., pushed forward) to the functionals that make of the degrees of freedom of the discretized system.
In doing so, we have to draw a correspondence between the boundary points of the reference element (its edges and vertices) and the boundary points of each cell in the mesh. Sometimes, this correspondence is not perfect, because the orientations of the boundary points of a cell may be different than the orientations of the boundary points of the reference element. For example, an edge that runs clockwise around the reference element may map onto an edge that runs counter-clockwise around the real cell.
For some finite elements (such as the most common P1 Lagrange finite elements) this doesn't matter. But for others---high-order elements, H-div and H-curl conforming elements---a difference in orientation affects the mapping between reference functionals and degrees of freedom.
The simplest example is a high-order nodal Lagrange finite element in 2D: the degrees of freedom on an edge of the reference element are numbered left-to-right, but if the orientation of the real edge is reverse, then we must read/write degrees of freedom right-to-left.
Things get more complicated in 3D: a quadrilateral face between hexahedra may have any of 8 different orientations (that make of the dihedral symmetries), and each one corresponds to a different reordering of the 2D grid of nodes supported on that quadrilateral.
Things also get more complicated for H-div elements. Functionals on the interfaces between cells represent the flux from one cell to another, and thus have direction. Reversing the orientation of an edge changes the sign of the mapping between the reference functional and the degree of freedom.
To assemble generic finite elements, we thus need to accommodate transforms between reference functionals and degrees of freedom that encompass (1) permutations, and (2) scalar multipliers.
This branch accomplishes this in two steps:
- We add PetscDualSpaceGetSymmetries() to the interface, to allow a dual space to describe how symmetries of the mesh points affect referent-to-real maps of functionals.
- We add PetscSectionSym, an object that encapsulates symmetries of the degrees of freedom whose layout is described by a PetscSection.
When a section is created from a DM that has a finite element discretization in its PetscDS, it will automatically construct the appropriate PetscSectionSym when it creates a PetscSection to describe a discretized function space.
If a PetsFE finite element discretization is not used, the user can create a PetscSectionSym for their degrees of freedom for themselves. We give an example of this for spectal elements in src/dm/impls/plex/examples/tutoerials/ex6.c.
* tisaac/dualspace-feature-symmetry: (22 commits) cast memzeros to void to avoid compiler complaints about const qualifiers DMPlex: fix stray PetscScalar to PetscReal DMPlex: fix stray PetscScalar to PetscReal Plex tutorials ex6: use symmetries in SEM example Plex tests ex3: added high order tests Plex tests ex3: add matrix-free near null space test DMPlex: fix PetscInt %D PetscPrintf character DMPlexTree: use symmetries when computing constraint matrices DMPlex: use symmetries in DMPlexGetIndicesPoint{Fields}_Internal() and DMPlexAnchorsModifyMat() DMPlex: use PetscSectionGet/RestorePointSyms() in DMPlexVecGet/SetClosure() DMPlex: added DMPlexGet/RestoreCompressedClosure() DMPlex: added DMPlexGetPointDualSpaceFEM() DMPlex: set PetscSectionSym in DMPlexCreateSectionInitial() DMLabel: added PETSCSECTIONSYMLABEL PetscSection: add PetscSectionSym PetscDualSpace: added PetscDualSpaceGetSymmetries() PetscDualSpace_Lagrange: setup recursively on dimension PetscDualSpace_Lagrange: order functions now go after tuple used PetscDualSpace_Lagrange: use lexicographic order for nodes DMPlex: added DMPlexComputePointGeometry_Internal() ...
show more ...
|
| #
fffc2ff8
|
| 16-Jun-2016 |
Toby Isaac <tisaac@uchicago.edu> |
PetscDualSpace: added PetscDualSpaceGetSymmetries()
Each dual space describes the symmetries of its functionals as partioned by the points in the closure of its reference cell. Each symmetry is F *
PetscDualSpace: added PetscDualSpaceGetSymmetries()
Each dual space describes the symmetries of its functionals as partioned by the points in the closure of its reference cell. Each symmetry is F * P, where F is a diagonal flipping matrix (+1/-1 on the diagonal) and P is a permutation.
So get looks like
perm = perms ? (perms[pos] ? perms[pos][ornt] : NULL) : NULL; flip = flips ? (flips[pos] ? flips[pos][ornt] : NULL) : NULL;
if (sym) {for (i = 0; i < dofPerPoint; i++) {pointArray[sym[i]] = vecArray[offset + i];}} else {for (i = 0; i < dofPerPoint; i++) {pointArray[ i ] = vecArray[offset + i];}} if (flip) {for (i = 0; i < dofPerPoint; i++) {pointArray[ i ] *= flip[i];}}
And set looks like (assuming pointArray is const):
perm = perms ? (perms[pos] ? perms[pos][ornt] : NULL) : NULL; flip = flips ? (flips[pos] ? flips[pos][ornt] : NULL) : NULL;
if (sym) {for (i = 0; i < dofPerPoint; i++) {fuse(vecArray[offset + i],pointArray[sym[i]] * (flip ? flip[sym[i]] : 1.));}} else {for (i = 0; i < dofPerPoint; i++) {fuse(vecArray[offset + i],pointArray[ i ] * (flip ? flip[ i ] : 1.));}}
Having this separation is also useful for inserting element matrices: we'd like to not have to permute the element matrix before we insert it, so we can just inverse permute the indices that we sum into the matrix. But, if there is a sign flip, we would rather do that in-place on the element matrix.
I originally intended to use this directly in DMPlexVecGetClosure() and friend, but this leaves out users who arent' using PetscDS/PetscFE/PetscDualSpace. I decided it was better to come up with a way to describe symmetries in PetscSection, and use these dual space symmetries as a particular implementation.
show more ...
|
| #
89cad2ff
|
| 08-Jul-2016 |
Toby Isaac <tisaac@uchicago.edu> |
PetscDualSpaceLagrange: added tensor setting
We should be able to have discontinuous tensor spaces, which are useful, e.g., in nodal DG methods. When setting up a default finite element, we try to
PetscDualSpaceLagrange: added tensor setting
We should be able to have discontinuous tensor spaces, which are useful, e.g., in nodal DG methods. When setting up a default finite element, we try to set up the tensor setting of the dual space to match the tensor setting of the primal space.
show more ...
|
| #
bef83e63
|
| 23-May-2016 |
Stefano Zampini <stefano.zampini@gmail.com> |
Merge branch 'master' into stefano_zampini/feature-pcbddc-saddlepoint
Conflicts: src/ksp/pc/impls/bddc/bddc.c src/ksp/pc/impls/bddc/bddcprivate.c src/mat/impls/aij/seq/mkl_pardiso/mkl_pardiso.c
|
| #
7caaeba4
|
| 19-May-2016 |
barral <none@none.fr> |
Merge branch 'master' into barral/feature-dmplex-adapt
|
| #
b1366652
|
| 16-May-2016 |
Matthew G. Knepley <knepley@gmail.com> |
Merge branch 'knepley/fix-petscfe-kernels-ts'
* knepley/fix-petscfe-kernels-ts: PetscFE+OpenCL: Fixed OpenCL residual eval for new interface Plex+SNES: Fixed kernels for Jacobian action Plex+S
Merge branch 'knepley/fix-petscfe-kernels-ts'
* knepley/fix-petscfe-kernels-ts: PetscFE+OpenCL: Fixed OpenCL residual eval for new interface Plex+SNES: Fixed kernels for Jacobian action Plex+SNES+TS: Pass time and shift down into residual and Jacobian kernels, and the boundary kernels - Added time into ComputeRHS/IFunction TS ex32: Added a heat equation example - Not yet working, but checking mass matrix now Plex+SNES: Added DMPlexSNESComputeJacobianActionFEM() - And an internal version
show more ...
|
| #
11dd639b
|
| 10-May-2016 |
Matthew G. Knepley <knepley@gmail.com> |
Plex+SNES+TS: Pass time and shift down into residual and Jacobian kernels, and the boundary kernels - Added time into ComputeRHS/IFunction
|
| #
35d70571
|
| 04-May-2016 |
Stefano Zampini <stefano.zampini@gmail.com> |
Merge branch 'master' into stefano_zampini/feature-pcbddc-saddlepoint
Conflicts: src/ksp/pc/impls/bddc/bddc.c src/ksp/pc/impls/bddc/bddcgraph.c src/ksp/pc/impls/bddc/bddcprivate.c
|
| #
ebdb4f8f
|
| 16-Apr-2016 |
Barry Smith <bsmith@mcs.anl.gov> |
Merge branch 'master' of bitbucket.org:petsc/petsc
|
| #
c019f295
|
| 16-Apr-2016 |
Toby Isaac <tisaac@uchicago.edu> |
Merge branch 'tisaac/dmp4est-feature-injection'
* tisaac/dmp4est-feature-injection: (27 commits) DMP4est: linear solve regression tests DMP4est: regression tests for exact interpolation/injectio
Merge branch 'tisaac/dmp4est-feature-injection'
* tisaac/dmp4est-feature-injection: (27 commits) DMP4est: linear solve regression tests DMP4est: regression tests for exact interpolation/injection PetscDualSpace: create height subspaces at setup. DMClone(): get agreement on cloning coordinates DMP4est: bump number of procs in regression test DMP4est: fix memory leaks DMP4est: added diagnostic views DMP4est: adding regression tests SNES tutorials ex12: added RUN_EXACT, solve from exact solution DMPlex: memory clean up in Injector/InterpolatorTree routines DMP4est: use DMCoarsen_Forest DMPlexComputerInterpolatorTree(): restore another work array DMPlexAnchorsModifyMat(): restore work arrays DMPlexComputeInjectorTree(): fix local / off-process bounds DMPlexComputeInjectorTree(): more fixes DMPlexComputeInjectorTree(): fix coarse/fine char mixup DMPlexComputeInjectorTree() compiles WIP: DMPlexComputeInjectorTree() Plex tests ex3: added regression tests for injectors DMPlex tests ex3: fix viewing, creating injectors ...
show more ...
|
| #
8d2f55e7
|
| 23-Mar-2016 |
Toby Isaac <tisaac@uchicago.edu> |
WIP
|