11const CDM = Ptr{Cvoid}
2-
32abstract type AbstractDM{PetscLib} end
43
4+ """
5+ DMLocalVec(v::CVec, dm::AbstractDM)
6+
7+ Container for an PETSc vector we know is "local"
8+
9+ # External Links
10+ $(_doc_external (" Vec/Vec" ))
11+ """
12+ mutable struct DMLocalVec{PetscLib, T, T_DM} <: AbstractVec{T}
13+ ptr:: CVec
14+ dm:: T_DM
15+ function DMLocalVec (ptr, dm:: AbstractDM{PetscLib} ) where {PetscLib}
16+ new {PetscLib, scalartype(PetscLib), typeof(dm)} (ptr, dm)
17+ end
18+ end
19+
20+ """
21+ DMGlobalVec(v::CVec, dm::AbstractDM)
22+
23+ Container for an PETSc vector we know is "global"
24+
25+ # External Links
26+ $(_doc_external (" Vec/Vec" ))
27+ """
28+ mutable struct DMGlobalVec{PetscLib, T, T_DM} <: AbstractVec{T}
29+ ptr:: CVec
30+ dm:: T_DM
31+ function DMGlobalVec (ptr, dm:: AbstractDM{PetscLib} ) where {PetscLib}
32+ new {PetscLib, scalartype(PetscLib), typeof(dm)} (ptr, dm)
33+ end
34+ end
35+
536# Mainly for DM we do not know the type of, namely ones returned by PETSc
637# functions such as `KSPGetDM`
738mutable struct PetscDM{PetscLib} <: AbstractDM{PetscLib}
839 ptr:: CDM
940end
1041
11-
1242"""
13- DMSetUp !(da::DM, opts=da.opts)
43+ setup !(da::DM, opts=da.opts)
1444
1545# External Links
1646$(_doc_external (" DM/DMSetUp" ))
1747"""
18- function DMSetUp ! end
48+ function setup ! end
1949
20- @for_petsc function DMSetUp ! (da:: AbstractDM{$PetscLib} , opts:: Options = da. opts)
50+ @for_petsc function setup ! (da:: AbstractDM{$PetscLib} , opts:: Options = da. opts)
2151 with (opts) do
2252 @chk ccall ((:DMSetUp , $ petsc_library), PetscErrorCode, (CDM,), da)
2353 end
2454end
2555
2656"""
27- DMSetFromOptions !(da::DM, opts=da.opts)
57+ setfromoptions !(da::DM, opts=da.opts)
2858
2959# External Links
3060$(_doc_external (" DM/DMSetFromOptions" ))
3161"""
32- function DMSetFromOptions ! end
62+ function setfromoptions ! end
3363
34- @for_petsc function DMSetFromOptions ! (
64+ @for_petsc function setfromoptions ! (
3565 da:: AbstractDM{$PetscLib} ,
3666 opts:: Options = da. opts,
3767)
5989end
6090
6191"""
62- DMGetDimension (dm::AbstractDM)
92+ getdimension (dm::AbstractDM)
6393
6494Return the topological dimension of the `dm`
6595
6696# External Links
6797$(_doc_external (" DM/DMGetDimension" ))
6898"""
69- function DMGetDimension end
99+ function getdimension ( :: AbstractDM ) end
70100
71- @for_petsc function DMGetDimension (dm:: AbstractDM{$PetscLib} )
101+ @for_petsc function getdimension (dm:: AbstractDM{$PetscLib} )
72102 dim = Ref {$PetscInt} ()
73103
74104 @chk ccall (
@@ -129,16 +159,16 @@ function view(::AbstractDM) end
129159end
130160
131161"""
132- DMCreateMatrix (dm::AbstractDM)
162+ creatematrix (dm::AbstractDM)
133163
134164Generates a matrix from the `dm` object.
135165
136166# External Links
137167$(_doc_external (" DM/DMCreateMatrix" ))
138168"""
139- function DMCreateMatrix end
169+ function creatematrix end
140170
141- @for_petsc function DMCreateMatrix (dm:: AbstractDM{$PetscLib} )
171+ @for_petsc function creatematrix (dm:: AbstractDM{$PetscLib} )
142172 mat = Mat {$PetscScalar} (C_NULL )
143173
144174 @chk ccall (
@@ -153,17 +183,17 @@ function DMCreateMatrix end
153183end
154184
155185"""
156- DMCreateLocalVector (dm::AbstractDM)
186+ createlocalvector (dm::AbstractDM)
157187
158188returns a local vector from the `dm` object.
159189
160190# External Links
161191$(_doc_external (" DM/DMCreateLocalVector" ))
162192"""
163- function DMCreateLocalVector end
193+ function createlocalvector end
164194
165- @for_petsc function DMCreateLocalVector (dm:: AbstractDM{$PetscLib} )
166- vec = Vec {$PetscScalar} (C_NULL )
195+ @for_petsc function createlocalvector (dm:: AbstractDM{$PetscLib} )
196+ vec = DMLocalVec (C_NULL , dm )
167197
168198 @chk ccall (
169199 (:DMCreateLocalVector , $ petsc_library),
@@ -177,17 +207,17 @@ function DMCreateLocalVector end
177207end
178208
179209"""
180- DMCreateGlobalVector (dm::DM; write::Bool = true, read::Bool = true)
210+ createglobalvector (dm::DM; write::Bool = true, read::Bool = true)
181211
182212returns a global vector from the `dm` object.
183213
184214# External Links
185215$(_doc_external (" DM/DMCreateGlobalVector" ))
186216"""
187- function DMCreateGlobalVector end
217+ function createglobalvector end
188218
189- @for_petsc function DMCreateGlobalVector (dm:: AbstractDM{$PetscLib} )
190- vec = Vec {$PetscScalar} (C_NULL )
219+ @for_petsc function createglobalvector (dm:: AbstractDM{$PetscLib} )
220+ vec = DMGlobalVec (C_NULL , dm )
191221
192222 @chk ccall (
193223 (:DMCreateGlobalVector , $ petsc_library),
@@ -201,31 +231,30 @@ function DMCreateGlobalVector end
201231end
202232
203233"""
204- DMLocalToGlobal !(
205- dm::AbstractDM
206- local_vec::AbstractVec ,
234+ update !(
235+ global_vec::DMGlobalVec,
236+ local_vec::DMLocalVec ,
207237 mode::InsertMode,
208- global_vec::AbstractVec,
209238 )
210239
211- Updates `global_vec` from `local_vec` using the `dm` with insert `mode`
240+ Updates `global_vec` from `local_vec` with insert `mode`
212241
213242# External Links
214243$(_doc_external (" DM/DMLocalToGlobal" ))
215244"""
216- function DMLocalToGlobal! end
245+ update! ( :: DMGlobalVec , :: DMLocalVec , :: InsertMode )
217246
218- @for_petsc function DMLocalToGlobal ! (
219- dm :: AbstractDM {$PetscLib} ,
220- local_vec:: AbstractVec ,
247+ @for_petsc function update ! (
248+ global_vec :: DMGlobalVec {$PetscLib} ,
249+ local_vec:: DMLocalVec{$PetscLib} ,
221250 mode:: InsertMode ,
222- global_vec:: AbstractVec ,
223251)
252+ @assert local_vec. dm === global_vec. dm
224253 @chk ccall (
225254 (:DMLocalToGlobal , $ petsc_library),
226255 PetscErrorCode,
227256 (CDM, CVec, InsertMode, CVec),
228- dm,
257+ local_vec . dm,
229258 local_vec,
230259 mode,
231260 global_vec,
@@ -235,31 +264,30 @@ function DMLocalToGlobal! end
235264end
236265
237266"""
238- DMGlobalToLocal !(
239- dm::DM
240- global_vec::AbstractVec ,
267+ update !(
268+ local_vec::DMLocalVec,
269+ global_vec::DMGlobalVec ,
241270 mode::InsertMode,
242- local_vec::AbstractVec,
243271 )
244272
245- Updates `local_vec` from `global_vec` using the `dm` with insert `mode`
273+ Updates `local_vec` from `global_vec` with insert `mode`
246274
247275# External Links
248276$(_doc_external (" DM/DMGlobalToLocal" ))
249277"""
250- function DMGlobalToLocal! end
278+ update! ( :: DMLocalVec , :: DMGlobalVec , :: InsertMode )
251279
252- @for_petsc function DMGlobalToLocal ! (
253- dm :: AbstractDM {$PetscLib} ,
254- global_vec:: AbstractVec ,
280+ @for_petsc function update ! (
281+ local_vec :: DMLocalVec {$PetscLib} ,
282+ global_vec:: DMGlobalVec{$PetscLib} ,
255283 mode:: InsertMode ,
256- local_vec:: AbstractVec ,
257284)
285+ @assert local_vec. dm === global_vec. dm
258286 @chk ccall (
259287 (:DMGlobalToLocal , $ petsc_library),
260288 PetscErrorCode,
261289 (CDM, CVec, InsertMode, CVec),
262- dm,
290+ global_vec . dm,
263291 global_vec,
264292 mode,
265293 local_vec,
@@ -269,18 +297,16 @@ function DMGlobalToLocal! end
269297end
270298
271299"""
272- DMGetCoordinateDM(
273- dm::AbstractDM
274- )
300+ getcoordinateDM(dm::AbstractDM)
275301
276302Create a `coord_dm` for the coordinates of `dm`.
277303
278304# External Links
279305$(_doc_external (" DM/DMGetCoordinateDM" ))
280306"""
281- function DMGetCoordinateDM end
307+ function getcoordinateDM end
282308
283- @for_petsc function DMGetCoordinateDM (dm:: AbstractDM{$PetscLib} )
309+ @for_petsc function getcoordinateDM (dm:: AbstractDM{$PetscLib} )
284310 coord_dm = empty (dm)
285311 @chk ccall (
286312 (:DMGetCoordinateDM , $ petsc_library),
@@ -296,19 +322,17 @@ function DMGetCoordinateDM end
296322end
297323
298324"""
299- DMGetCoordinatesLocal(
300- dm::AbstractDM
301- )
325+ getcoordinateslocal(dm::AbstractDM)
302326
303327Gets a local vector with the coordinates associated with `dm`.
304328
305329# External Links
306330$(_doc_external (" DM/DMGetCoordinatesLocal" ))
307331"""
308- function DMGetCoordinatesLocal end
332+ function getcoordinateslocal end
309333
310- @for_petsc function DMGetCoordinatesLocal (dm:: AbstractDM{$PetscLib} )
311- coord_vec = Vec {$PetscScalar} (C_NULL )
334+ @for_petsc function getcoordinateslocal (dm:: AbstractDM{$PetscLib} )
335+ coord_vec = DMLocalVec (C_NULL , dm )
312336 @chk ccall (
313337 (:DMGetCoordinatesLocal , $ petsc_library),
314338 PetscErrorCode,
0 commit comments