I'll have a look at this tonight. Obviously we'll need to support newer fenics, but that requires some changes in dolfin to be able to specify different bcs for rows and columns (for off-diag blocks) in the assemble-system interface. If you don't require symmetry, you can bypass cbc.block and use bc.apply() / bc.zero() on the diagonal / off-diag blocks.
J. Den 9. aug. 2013 12:06 skrev "Line" <[email protected]> følgende: > Hello !**** > > Sorry on advance for the long email, I tried to be specific. **** > > I need to use the cbc.block package for my python code (I need > block-structure matrix), but I don't know how to apply my boundary > condition (Dirichlet boundary conditions, basically non-slip conditions). > Let me explain:**** > > I downloaded the last version of cbc.block from: > https://bitbucket.org/fenics-apps/cbc.bloI ck/overview. I first tried to > run some demo, mixedpoisson.py and biot.py for example. However, I have a > problem with the block_symmetric_assemble and block_assemble functions. > Here is the error I obtain :**** > > *Traceback (most recent call last):** > File "mixedpoisson.py", line 97, in > [a21, 0 ]], bcs=bcs) > File "/usr/local/lib/python2.7/dist-packages/block/block_assemble.py", > line 35, in block_symmetric_assemble > symm[i,j], asymm[i,j] = _symmetric_assemble(forms[i,j], row_bcs=bcs[i], > col_bcs=bcs[j]) > File "/usr/local/lib/python2.7/dist-packages/block/block_assemble.py", > line 79, in _symmetric_assemble > from dolfin import symmetric_assemble > ImportError: cannot import name symmetric_assemble***** > > I suspect an incompatibility between the versions of FEniCS/cbc.block (I > have dolfin-1.2.0). I understood that "symmetric_assemble" does no longer > exist in the Python interface, sp obviously it won't work. **** > > Consequently, I downloaded a previous version of cbc.block (1.0.1), where > I can use bc = block_bc([...]) (with inside my boundary conditions defined > with DirichletBC) and bc.apply(A, b) to apply my boundary conditions > (block_bc is not available in the last version of cbc.block). I previously > assemble my blocks and build my block matrix with: A = block_mat([...]) and > the RHS: b = block_vec([...]). **** > > Obviously, it's not the best way to do it (some of the demo for example > still don't work), but I don't know how to apply boundary conditions with > the newest version of cbc.block.**** > > On top of that, I have an other error which I don't know how to solve:**** > > *Calculated signs of diagonal blocks:[1, None, 1]** > Traceback (most recent call last): > File "block_stokes_1.py", line 93, in > bc.apply(A, b, save_A=True) > File "/usr/local/lib/python2.7/dist-packages/block/block_bc.py", line 41, > in apply > self.apply_matvec(A, b, symmetric) > File "/usr/local/lib/python2.7/dist-packages/block/block_bc.py", line 87, > in apply_matvec > bc.zero_columns(A[j,i], b[j]) > TypeError: in method 'DirichletBC_zero_columns', argument 2 of type > 'dolfin::GenericMatrix &'***** > > I had an idea from https://lists.launchpad.net/cbc.block/msg00018.html,but > even with that, it still doesn't work.So now, I'm lost ! Anyone can > help me with that ?**** > > Thanks in advance for your time (sorry again for the huge question...),*** > * > > Coraline**** > > PS: I install FEniCS via dorsal, so I have dolfin-1.2.0**** > > Python 2.7.3**** > > ** ** > > _______________________________________________ > fenics mailing list > [email protected] > http://fenicsproject.org/mailman/listinfo/fenics > >
_______________________________________________ fenics mailing list [email protected] http://fenicsproject.org/mailman/listinfo/fenics
