https://mooseframework.inl.gov
Loading...
Searching...
No Matches
PetscDMMoose.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12#include "libmesh/petsc_macro.h"
13
14// PETSc includes
15#include <petscdm.h>
16#define DMMOOSE "moose"
17
18// C++ includes
19#include <vector>
20#include <set>
21#include <string>
22
23// Forward declarations
25namespace libMesh
26{
27class DofMapBase;
28class System;
29}
30
31extern PetscErrorCode DMMooseRegisterAll();
32
41extern PetscErrorCode DMCreateMoose(MPI_Comm comm,
43 const libMesh::DofMapBase & dof_map,
44 const libMesh::System & system,
45 const std::string & dm_name,
46 DM * dm);
47
48extern PetscErrorCode DMMooseReset(DM);
49extern PetscErrorCode DMMooseSetNonlinearSystem(DM, NonlinearSystemBase &);
50extern PetscErrorCode DMMooseGetNonlinearSystem(DM, NonlinearSystemBase *&);
51extern PetscErrorCode DMMooseSetDofMap(DM, const libMesh::DofMapBase &);
52extern PetscErrorCode DMMooseGetBlocks(DM, std::vector<std::string> &);
53extern PetscErrorCode DMMooseGetVariables(DM, std::vector<std::string> &);
54extern PetscErrorCode DMMooseGetSides(DM, std::set<std::string> &);
55extern PetscErrorCode DMMooseGetUnSides(DM, std::set<std::string> &);
56extern PetscErrorCode
57DMMooseGetContacts(DM, std::vector<std::pair<std::string, std::string>> &, std::vector<bool> &);
58extern PetscErrorCode
59DMMooseGetUnContacts(DM, std::vector<std::pair<std::string, std::string>> &, std::vector<bool> &);
60extern PetscErrorCode DMMooseSetBlocks(DM, const std::vector<std::string> &);
61extern PetscErrorCode DMMooseSetVariables(DM, const std::vector<std::string> &);
62extern PetscErrorCode DMMooseSetSides(DM, const std::set<std::string> &);
63extern PetscErrorCode DMMooseSetUnSides(DM, const std::set<std::string> &);
64extern PetscErrorCode DMMooseSetContacts(DM,
65 const std::vector<std::pair<std::string, std::string>> &,
66 const std::vector<bool> &);
67extern PetscErrorCode DMMooseSetUnContacts(DM,
68 const std::vector<std::pair<std::string, std::string>> &,
69 const std::vector<bool> &);
70extern PetscErrorCode DMMooseSetSplitNames(DM, const std::vector<std::string> &);
71extern PetscErrorCode DMMooseGetSplitNames(DM, const std::vector<std::string> &);
72extern PetscErrorCode DMMooseSetSplitVars(DM, const std::string &, const std::set<std::string> &);
73extern PetscErrorCode DMMooseGetSplitVars(DM, const std::string &, std::set<std::string> &);
74extern PetscErrorCode DMMooseSetSplitBlocks(DM, const std::string &, const std::set<std::string> &);
75extern PetscErrorCode DMMooseGetSplitBlocks(DM, const std::string &, std::set<std::string> &);
76extern PetscErrorCode DMMooseSetSplitSides(DM, const std::string &, const std::set<std::string> &);
77extern PetscErrorCode DMMooseGetSplitSides(DM, const std::string &, std::set<std::string> &);
78extern PetscErrorCode SNESUpdateDMMoose(SNES snes, PetscInt iteration);
PetscErrorCode PetscOptionItems *PetscErrorCode DM dm
PetscErrorCode DMMooseGetBlocks(DM, std::vector< std::string > &)
PetscErrorCode DMMooseSetVariables(DM, const std::vector< std::string > &)
PetscErrorCode DMCreateMoose(MPI_Comm comm, NonlinearSystemBase &nl, const libMesh::DofMapBase &dof_map, const libMesh::System &system, const std::string &dm_name, DM *dm)
Create a MOOSE DM.
PetscErrorCode DMMooseGetNonlinearSystem(DM, NonlinearSystemBase *&)
PetscErrorCode SNESUpdateDMMoose(SNES snes, PetscInt iteration)
PetscErrorCode DMMooseRegisterAll()
PetscErrorCode DMMooseSetUnSides(DM, const std::set< std::string > &)
PetscErrorCode DMMooseReset(DM)
PetscErrorCode DMMooseSetSplitSides(DM, const std::string &, const std::set< std::string > &)
PetscErrorCode DMMooseSetSplitBlocks(DM, const std::string &, const std::set< std::string > &)
PetscErrorCode DMMooseSetNonlinearSystem(DM, NonlinearSystemBase &)
PetscErrorCode DMMooseSetContacts(DM, const std::vector< std::pair< std::string, std::string > > &, const std::vector< bool > &)
PetscErrorCode DMMooseSetUnContacts(DM, const std::vector< std::pair< std::string, std::string > > &, const std::vector< bool > &)
PetscErrorCode DMMooseGetSplitBlocks(DM, const std::string &, std::set< std::string > &)
PetscErrorCode DMMooseGetSides(DM, std::set< std::string > &)
PetscErrorCode DMMooseSetSplitVars(DM, const std::string &, const std::set< std::string > &)
PetscErrorCode DMMooseGetSplitVars(DM, const std::string &, std::set< std::string > &)
PetscErrorCode DMMooseGetUnContacts(DM, std::vector< std::pair< std::string, std::string > > &, std::vector< bool > &)
PetscErrorCode DMMooseGetSplitSides(DM, const std::string &, std::set< std::string > &)
PetscErrorCode DMMooseSetSides(DM, const std::set< std::string > &)
PetscErrorCode DMMooseSetBlocks(DM, const std::vector< std::string > &)
PetscErrorCode DMMooseGetContacts(DM, std::vector< std::pair< std::string, std::string > > &, std::vector< bool > &)
PetscErrorCode DMMooseGetSplitNames(DM, const std::vector< std::string > &)
PetscErrorCode DMMooseSetDofMap(DM, const libMesh::DofMapBase &)
PetscErrorCode DMMooseSetSplitNames(DM, const std::vector< std::string > &)
PetscErrorCode DMMooseGetVariables(DM, std::vector< std::string > &)
PetscErrorCode DMMooseGetUnSides(DM, std::set< std::string > &)
Nonlinear system to be solved.
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...