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

I need to make many instances of DirichletBC, but I exactly how many is a user 
function. As such, I am using a loop to create my bcs. 


        for(int j = 0; j < numberCathodes; j++){
                
                cathode = &cathodes[j];
                
                //assemble
                CathodeBC(iInit, cathode, phiCBC0);
                
                // create anodic and cathodic boundary condition Functions from 
BCs
                numRows = PhiCBC0.vector().size();
                rows = new dolfin::uint[numRows];
                for(dolfin::uint j = 0; j < numRows; j ++)
                        rows[j] = j;
                PhiCBC0.vector().set(phiCBC0, numRows, rows);
                delete [] rows;
                
                //Define boundary condition
                DirichletBC cbc0(V, PhiCBC0, *cathode);
                bcsTEMP.push_back(cbc0);
        }

where bcsTEMP is a std::vector<dolfin::DirichletBC>

This does not work, since DirichletBC is abstract and so I can't make it a type 
for a vector. Trying to use pointers will obviously not work, since once the 
object goes out of scope, it is cleaned up, and I end up following a dangling 
pointer to nowhere. 

I am going to make my own class called dirichletBC, the only difference being 
that I over load the apply() method, since it is the one that is virtual. My 
question is which apply() should I use?

Since my VariationalProblem is Laplaces equation with a single bilinear form 
and a single linear form ( a(V, V) and L(V) ), I assume that I need to apply 
the boundary condition to a matrix and a vector, hence using:

00171 void DirichletBC::apply(GenericMatrix& A, GenericVector& b) const
00172 {
00173   apply(&A, &b, 0);
00174 }

Is that right? Is there something else I need to do to make this work? is there 
an easier way to make this work? Do you need more information about my problem?

Thank you for your help.

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

_______________________________________________
Mailing list: https://launchpad.net/~dolfin
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~dolfin
More help   : https://help.launchpad.net/ListHelp

Reply via email to