Sure, so with gamg (which was my first choice too), I get the following:
[0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[0]PETSC ERROR:
[0]PETSC ERROR: Must call DMShellSetGlobalVector() or
DMShellSetCreateGlobalVector()
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
for trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.5.2, Sep, 08, 2014
[0]PETSC ERROR: /home/luc/research/feap_repo/ShearBands/parfeap/feap on
a arch-opt named euler by luc Thu Nov 20 16:19:29 2014
[0]PETSC ERROR: Configure options --with-cc=gcc --with-fc=gfortran
--with-cxx=g++ --with-debugging=0 --with-shared-libraries=0
--download-fblaslapack --download-mpich --download-parmetis
--download-metis --download-ml=yes --download-hypre
--download-superlu_dist --download-mumps --download-scalapack
[0]PETSC ERROR: #145 DMCreateGlobalVector_Shell() line 245 in
/home/luc/research/petsc-3.5.2/src/dm/impls/shell/dmshell.c
[0]PETSC ERROR: #146 DMCreateGlobalVector() line 681 in
/home/luc/research/petsc-3.5.2/src/dm/interface/dm.c
[0]PETSC ERROR: #147 DMGetGlobalVector() line 154 in
/home/luc/research/petsc-3.5.2/src/dm/interface/dmget.c
[0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[0]PETSC ERROR:
[0]PETSC ERROR: Must call DMShellSetGlobalVector() or
DMShellSetCreateGlobalVector()
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
for trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.5.2, Sep, 08, 2014
[0]PETSC ERROR: /home/luc/research/feap_repo/ShearBands/parfeap/feap on
a arch-opt named euler by luc Thu Nov 20 16:19:29 2014
[0]PETSC ERROR: Configure options --with-cc=gcc --with-fc=gfortran
--with-cxx=g++ --with-debugging=0 --with-shared-libraries=0
--download-fblaslapack --download-mpich --download-parmetis
--download-metis --download-ml=yes --download-hypre
--download-superlu_dist --download-mumps --download-scalapack
[0]PETSC ERROR: #148 DMCreateGlobalVector_Shell() line 245 in
/home/luc/research/petsc-3.5.2/src/dm/impls/shell/dmshell.c
[0]PETSC ERROR: #149 DMCreateGlobalVector() line 681 in
/home/luc/research/petsc-3.5.2/src/dm/interface/dm.c
[0]PETSC ERROR: #150 DMGetGlobalVector() line 154 in
/home/luc/research/petsc-3.5.2/src/dm/interface/dmget.c
KSP Object: 1 MPI processes
type: gmres
GMRES: restart=30, using Classical (unmodified) Gram-Schmidt
Orthogonalization with no iterative refinement
GMRES: happy breakdown tolerance 1e-30
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-08, absolute=1e-16, divergence=1e+16
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: 1 MPI processes
type: fieldsplit
FieldSplit with Schur preconditioner, factorization FULL
Preconditioner for the Schur complement formed from Sp, an
assembled approximation to S, which uses (the lumped) A00's diagonal's
inverse
Split info:
Split number 0 Defined by IS
Split number 1 Defined by IS
KSP solver for A00 block
KSP Object: (fieldsplit_0_) 1 MPI processes
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_0_) 1 MPI processes
type: hypre
HYPRE Euclid preconditioning
HYPRE Euclid: number of levels 1
linear system matrix = precond matrix:
Mat Object: (fieldsplit_0_) 1 MPI processes
type: seqaij
rows=2000, cols=2000
total: nonzeros=40000, allocated nonzeros=40000
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 400 nodes, limit used is 5
KSP solver for S = A11 - A10 inv(A00) A01
KSP Object: (fieldsplit_1_) 1 MPI processes
type: gmres
GMRES: restart=30, using Classical (unmodified) Gram-Schmidt
Orthogonalization with no iterative refinement
GMRES: happy breakdown tolerance 1e-30
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_1_) 1 MPI processes
type: gamg
MG: type is MULTIPLICATIVE, levels=2 cycles=v
Cycles per PCApply=1
Using Galerkin computed coarse grid matrices
Coarse grid solver -- level -------------------------------
KSP Object: (fieldsplit_1_mg_coarse_) 1 MPI processes
type: preonly
maximum iterations=1, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_1_mg_coarse_) 1 MPI processes
type: bjacobi
block Jacobi: number of blocks = 1
Local solve is same for all blocks, in the following KSP
and PC objects:
KSP Object: (fieldsplit_1_mg_coarse_sub_) 1
MPI processes
type: preonly
maximum iterations=1, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50,
divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_1_mg_coarse_sub_) 1
MPI processes
type: lu
LU: out-of-place factorization
tolerance for zero pivot 2.22045e-14
using diagonal shift on blocks to prevent zero pivot
[INBLOCKS]
matrix ordering: nd
factor fill ratio given 5, needed 1.22785
Factored matrix follows:
Mat Object: 1 MPI processes
type: seqaij
rows=13, cols=13
package used to perform factorization: petsc
total: nonzeros=97, allocated nonzeros=97
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 10 nodes, limit
used is 5
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: seqaij
rows=13, cols=13
total: nonzeros=79, allocated nonzeros=79
total number of mallocs used during MatSetValues calls =0
not using I-node routines
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: seqaij
rows=13, cols=13
total: nonzeros=79, allocated nonzeros=79
total number of mallocs used during MatSetValues calls =0
not using I-node routines
Down solver (pre-smoother) on level 1
-------------------------------
KSP Object: (fieldsplit_1_mg_levels_1_) 1 MPI processes
type: chebyshev
Chebyshev: eigenvalue estimates: min = 0.0979919, max =
2.05783
maximum iterations=2
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using nonzero initial guess
using NONE norm type for convergence test
PC Object: (fieldsplit_1_mg_levels_1_) 1 MPI processes
type: sor
SOR: type = local_symmetric, iterations = 1, local
iterations = 1, omega = 1
linear system matrix followed by preconditioner matrix:
Mat Object: (fieldsplit_1_) 1 MPI
processes
type: schurcomplement
rows=330, cols=330
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object: (fieldsplit_1_) 1 MPI
processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 121 nodes, limit
used is 5
A10
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=2000
total: nonzeros=22800, allocated nonzeros=22800
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 121 nodes, limit
used is 5
KSP of A00
KSP Object: (fieldsplit_0_) 1 MPI
processes
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50,
divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_0_) 1 MPI
processes
type: hypre
HYPRE Euclid preconditioning
HYPRE Euclid: number of levels 1
linear system matrix = precond matrix:
Mat Object: (fieldsplit_0_) 1
MPI processes
type: seqaij
rows=2000, cols=2000
total: nonzeros=40000, allocated nonzeros=40000
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 400 nodes, limit
used is 5
A01
Mat Object: 1 MPI processes
type: seqaij
rows=2000, cols=330
total: nonzeros=22800, allocated nonzeros=22800
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 400 nodes, limit
used is 5
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 121 nodes, limit used is 5
Up solver (post-smoother) same as down solver (pre-smoother)
linear system matrix followed by preconditioner matrix:
Mat Object: (fieldsplit_1_) 1 MPI processes
type: schurcomplement
rows=330, cols=330
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object: (fieldsplit_1_) 1 MPI processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 121 nodes, limit used is 5
A10
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=2000
total: nonzeros=22800, allocated nonzeros=22800
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 121 nodes, limit used is 5
KSP of A00
KSP Object: (fieldsplit_0_) 1 MPI processes
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50,
divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_0_) 1 MPI processes
type: hypre
HYPRE Euclid preconditioning
HYPRE Euclid: number of levels 1
linear system matrix = precond matrix:
Mat Object: (fieldsplit_0_) 1 MPI processes
type: seqaij
rows=2000, cols=2000
total: nonzeros=40000, allocated nonzeros=40000
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 400 nodes, limit used is 5
A01
Mat Object: 1 MPI processes
type: seqaij
rows=2000, cols=330
total: nonzeros=22800, allocated nonzeros=22800
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 400 nodes, limit used is 5
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 121 nodes, limit used is 5
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: seqaij
rows=2330, cols=2330
total: nonzeros=93242, allocated nonzeros=93242
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 521 nodes, limit used is 5
I am still missing the same call to
DMShellSetCreateGlobalVector()/DMShellSetGlobalVector(), the only
difference is that I get this error message twice : )
FYI this how I set my DMShell, KSP and PC:
c Set up the number of fields, the section dofs and the fields
sections dofs
call PetscSectionCreate(PETSC_COMM_WORLD, FSSection, ierr)
call PetscSectionSetNumFields(FSSection, numFields, ierr)
call PetscSectionSetChart(FSSection, 1, numpeq+1, ierr)
call PetscSectionGetChart(FSSection, NF, NE, ierr)
do some loop over nodes and dofs
call PetscSectionSetDof(FSSection, kk, 1, ierr)
call PetscSectionSetFieldDof(FSSection, kk,
jj-1,1, ierr)
enddo
call PetscSectionSetUp(FSSection, ierr)
c Create the DM and set the default section
if(DM_flg) then
call DMShellCreate(PETSC_COMM_WORLD,FSDM, ierr)
call DMSetDefaultSection(FSDM, FSSection, ierr)
call DMSetUp(FSDM, ierr)
endif
call KSPCreate (PETSC_COMM_WORLD, kspsol ,ierr)
call PetscOptionsGetString(PETSC_NULL_CHARACTER,'-pc_type',
& pctype,chk,ierr)
c Check for fieldsplit preconditioner to assign a DM to the KSP
if (chk .eqv. PETSC_TRUE) then
if(pctype.eq.'fieldsplit') then
call KSPSetDM(kspsol, FSDM, ierr)
call KSPSetDMActive(kspsol, PETSC_FALSE, ierr)
endif
endif
c call KSPSetOperators (kspsol, Kmat, Kmat,
c & DIFFERENT_NONZERO_PATTERN ,ierr)
call KSPSetOperators(kspsol, Kmat, Kmat, ierr)
c Options from command line
call KSPSetFromOptions(kspsol,ierr)
call KSPGetPC (kspsol, pc , ierr)
call PCSetCoordinates(pc,ndm,numpn,hr(np(43)),ierr)
Best,
Luc
On 11/21/2014 11:14 AM, Matthew Knepley wrote:
On Fri, Nov 21, 2014 at 9:55 AM, Luc Berger-Vergiat
<[email protected] <mailto:[email protected]>> wrote:
Hi all,
I am using a DMShell to create to use a fieldsplit preconditioner.
I would like to try some of petsc's multigrid options: mg and gamg.
Lets start with gamg, since that does not need anything else from the
user. If you want to use mg,
then you will need to supply the interpolation/restriction operators
since we cannot calculate them
without an idea of the discretization.
Thanks,
Matt
When I call my preconditioner:
-ksp_type gmres -pc_type fieldsplit -pc_fieldsplit_type schur
-pc_fieldsplit_schur_factorization_type full
-pc_fieldsplit_schur_precondition selfp
-pc_fieldsplit_0_fields 2,3 -pc_fieldsplit_1_fields 0,1
-fieldsplit_0_ksp_type preonly -fieldsplit_0_pc_type hypre
-fieldsplit_0_pc_hypre_type euclid -fieldsplit_1_ksp_type
gmres -fieldsplit_1_pc_type mg -malloc_log mlog -log_summary
time.log -ksp_view
it returns me the following error message and ksp_view:
[0]PETSC ERROR: --------------------- Error Message
--------------------------------------------------------------
[0]PETSC ERROR:
[0]PETSC ERROR: Must call DMShellSetGlobalVector() or
DMShellSetCreateGlobalVector()
[0]PETSC ERROR: See
http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble
shooting.
[0]PETSC ERROR: Petsc Release Version 3.5.2, Sep, 08, 2014
[0]PETSC ERROR:
/home/luc/research/feap_repo/ShearBands/parfeap/feap on a arch-opt
named euler by luc Fri Nov 21 10:12:53 2014
[0]PETSC ERROR: Configure options --with-cc=gcc --with-fc=gfortran
--with-cxx=g++ --with-debugging=0 --with-shared-libraries=0
--download-fblaslapack --download-mpich --download-parmetis
--download-metis --download-ml=yes --download-hypre
--download-superlu_dist --download-mumps --download-scalapack
[0]PETSC ERROR: #259 DMCreateGlobalVector_Shell() line 245 in
/home/luc/research/petsc-3.5.2/src/dm/impls/shell/dmshell.c
[0]PETSC ERROR: #260 DMCreateGlobalVector() line 681 in
/home/luc/research/petsc-3.5.2/src/dm/interface/dm.c
[0]PETSC ERROR: #261 DMGetGlobalVector() line 154 in
/home/luc/research/petsc-3.5.2/src/dm/interface/dmget.c
KSP Object: 1 MPI processes
type: gmres
GMRES: restart=30, using Classical (unmodified) Gram-Schmidt
Orthogonalization with no iterative refinement
GMRES: happy breakdown tolerance 1e-30
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-08, absolute=1e-16, divergence=1e+16
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: 1 MPI processes
type: fieldsplit
FieldSplit with Schur preconditioner, factorization FULL
Preconditioner for the Schur complement formed from Sp, an
assembled approximation to S, which uses (the lumped) A00's
diagonal's inverse
Split info:
Split number 0 Defined by IS
Split number 1 Defined by IS
KSP solver for A00 block
KSP Object: (fieldsplit_0_) 1 MPI processes
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_0_) 1 MPI processes
type: hypre
HYPRE Euclid preconditioning
HYPRE Euclid: number of levels 1
linear system matrix = precond matrix:
Mat Object: (fieldsplit_0_) 1 MPI processes
type: seqaij
rows=2000, cols=2000
total: nonzeros=40000, allocated nonzeros=40000
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 400 nodes, limit used is 5
KSP solver for S = A11 - A10 inv(A00) A01
KSP Object: (fieldsplit_1_) 1 MPI processes
type: gmres
GMRES: restart=30, using Classical (unmodified)
Gram-Schmidt Orthogonalization with no iterative refinement
GMRES: happy breakdown tolerance 1e-30
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_1_) 1 MPI processes
type: mg
MG: type is MULTIPLICATIVE, levels=1 cycles=v
Cycles per PCApply=1
Not using Galerkin computed coarse grid matrices
Coarse grid solver -- level -------------------------------
KSP Object: (fieldsplit_1_mg_levels_0_) 1 MPI
processes
type: chebyshev
Chebyshev: eigenvalue estimates: min = 1.70057, max
= 18.7063
Chebyshev: estimated using: [0 0.1; 0 1.1]
KSP Object:
(fieldsplit_1_mg_levels_0_est_) 1 MPI processes
type: gmres
GMRES: restart=30, using Classical (unmodified)
Gram-Schmidt Orthogonalization with no iterative refinement
GMRES: happy breakdown tolerance 1e-30
maximum iterations=10, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50,
divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_1_mg_levels_0_)
1 MPI processes
type: sor
SOR: type = local_symmetric, iterations = 1,
local iterations = 1, omega = 1
linear system matrix followed by preconditioner
matrix:
Mat Object: (fieldsplit_1_) 1 MPI
processes
type: schurcomplement
rows=330, cols=330
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object:
(fieldsplit_1_) 1 MPI processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 121 nodes,
limit used is 5
A10
Mat Object: 1 MPI
processes
type: seqaij
rows=330, cols=2000
total: nonzeros=22800, allocated
nonzeros=22800
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 121 nodes,
limit used is 5
KSP of A00
KSP Object:
(fieldsplit_0_) 1 MPI processes
type: preonly
maximum iterations=10000, initial guess is
zero
tolerances: relative=1e-05,
absolute=1e-50, divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object:
(fieldsplit_0_) 1 MPI processes
type: hypre
HYPRE Euclid preconditioning
HYPRE Euclid: number of levels 1
linear system matrix = precond matrix:
Mat Object:
(fieldsplit_0_) 1 MPI processes
type: seqaij
rows=2000, cols=2000
total: nonzeros=40000, allocated
nonzeros=40000
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 400
nodes, limit used is 5
A01
Mat Object: 1 MPI
processes
type: seqaij
rows=2000, cols=330
total: nonzeros=22800, allocated
nonzeros=22800
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 400 nodes,
limit used is 5
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 121 nodes, limit
used is 5
maximum iterations=1, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50,
divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_1_mg_levels_0_) 1 MPI
processes
type: sor
SOR: type = local_symmetric, iterations = 1, local
iterations = 1, omega = 1
linear system matrix followed by preconditioner matrix:
Mat Object: (fieldsplit_1_) 1 MPI processes
type: schurcomplement
rows=330, cols=330
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object: (fieldsplit_1_) 1
MPI processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 121 nodes,
limit used is 5
A10
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=2000
total: nonzeros=22800, allocated nonzeros=22800
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 121 nodes,
limit used is 5
KSP of A00
KSP Object: (fieldsplit_0_) 1
MPI processes
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50,
divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_0_) 1
MPI processes
type: hypre
HYPRE Euclid preconditioning
HYPRE Euclid: number of levels 1
linear system matrix = precond matrix:
Mat Object:
(fieldsplit_0_) 1 MPI processes
type: seqaij
rows=2000, cols=2000
total: nonzeros=40000, allocated nonzeros=40000
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 400 nodes,
limit used is 5
A01
Mat Object: 1 MPI processes
type: seqaij
rows=2000, cols=330
total: nonzeros=22800, allocated nonzeros=22800
total number of mallocs used during
MatSetValues calls =0
using I-node routines: found 400 nodes,
limit used is 5
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 121 nodes, limit used
is 5
linear system matrix followed by preconditioner matrix:
Mat Object: (fieldsplit_1_) 1 MPI processes
type: schurcomplement
rows=330, cols=330
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object: (fieldsplit_1_) 1 MPI
processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 121 nodes, limit
used is 5
A10
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=2000
total: nonzeros=22800, allocated nonzeros=22800
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 121 nodes, limit
used is 5
KSP of A00
KSP Object: (fieldsplit_0_) 1 MPI
processes
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50,
divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_0_) 1 MPI processes
type: hypre
HYPRE Euclid preconditioning
HYPRE Euclid: number of levels 1
linear system matrix = precond matrix:
Mat Object: (fieldsplit_0_) 1 MPI
processes
type: seqaij
rows=2000, cols=2000
total: nonzeros=40000, allocated nonzeros=40000
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 400 nodes, limit
used is 5
A01
Mat Object: 1 MPI processes
type: seqaij
rows=2000, cols=330
total: nonzeros=22800, allocated nonzeros=22800
total number of mallocs used during MatSetValues
calls =0
using I-node routines: found 400 nodes, limit
used is 5
Mat Object: 1 MPI processes
type: seqaij
rows=330, cols=330
total: nonzeros=7642, allocated nonzeros=7642
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 121 nodes, limit used is 5
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: seqaij
rows=2330, cols=2330
total: nonzeros=93242, allocated nonzeros=93242
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 521 nodes, limit used is 5
I am not completely surprised by this since the multigrid
algorithm might want to know the structure of my vector in order
to do a good job at restrictions and prolongations, etc... I am
just not sure when I should call: DMShellSetGlobalVector() or
DMShellSetCreateGlobalVector().
If I call DMShellSetGlobalVector() I assume that I need to
generate my vector somehow before hand but I don't know what is
required to make it a valid "template" vector?
If I call DMShellSetCreateGlobalVector() I need to pass it a
functions that computes a vector but what kind of vector? A
residual or a "template"? This is not very clear to me...
--
Best,
Luc
--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which
their experiments lead.
-- Norbert Wiener