← Back to team overview

dolfin team mailing list archive

[Question #103905]: Restricted dof (part 2)

 

New question #103905 on DOLFIN:
https://answers.launchpad.net/dolfin/+question/103905

I've finally got round to calculating the dofs on a boundary from a mesh function, so that I can go about trying to solve a pde purely on the boundary. However, I can't quite work out how best to play about with the assembled system:

If I have:

a = ( .. )*ds(i)
L = ( .. )*ds(i)

A = assemble(a, exterior_facet_domains=meshfn)
b = assemble(L, exterior_facet_domains=meshfn)

then, as far as I can tell I have two basic options, but I'm not sure what is best, and can't get (2) to work:

1. Do something along the lines of A_sub = A.vector()[rows, cols] (where rows = cols, is the dofs on which I wish to solve), ditto for b, and then solve using numpy (maybe I can put it back into a GenericMatrix and use one of the dolfin solvers, but I've certainly changed the structure and don't know how to do it anyway).

2. Adjust A,b appropriately as:
A.ident(unused_dofs)
b[unused_dofs] = 0.0

But this method throws up an error from petsc about the object not being in the correct state.

Matrix of size 10201 x 10201 has 0 nonzero entries.
[0]PETSC ERROR: --------------------- Error Message ------------------------------------
[0]PETSC ERROR: Object is in wrong state!
[0]PETSC ERROR: Matrix is missing diagonal entry in row 10200!
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: Petsc Release Version 3.0.0, Patch 11, Mon Feb  1 11:01:51 CST 2010
[0]PETSC ERROR: See docs/changes/index.html for recent updates.
[0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
[0]PETSC ERROR: See docs/index.html for manual pages.
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: Unknown Name on a linux-gnu named lappytop-dos by dbeacham Wed Mar 10 17:49:18 2010
[0]PETSC ERROR: Libraries linked from /home/dbeacham/FEM/stable/build/lib
[0]PETSC ERROR: Configure run at Thu Feb 11 11:37:57 2010
[0]PETSC ERROR: Configure options COPTFLAGS=-O3 --with-debugging=0 --with-shared=1 --with-clanguage=cxx --download-umfpack=1 --prefix=/home/dbeacham/FEM/stable/build
[0]PETSC ERROR: ------------------------------------------------------------------------
[0]PETSC ERROR: MatZeroRows_SeqAIJ() line 1367 in src/mat/impls/aij/seq/aij.c
[0]PETSC ERROR: MatZeroRows() line 4856 in src/mat/interface/matrix.c
[0]PETSC ERROR: MatZeroRowsIS() line 4913 in src/mat/interface/matrix.c

Thanks for any help,
David

You received this question notification because you are a member of
DOLFIN Team, which is an answer contact for DOLFIN.



Follow ups