### Multi - control optimization and volume constraint implementation

148

views

0

Hello everyone.

I wish to perform topology optimization so that I have more than one control parameter (P1 to P7). I have a function 'volfrac' that defines the volume fraction given these control parameters and so I intend integrate this to prescribe my volume constraint. The problem is the examples for structural optimization on the repository all have one parameter as the control (usually density). How do I define the volume constraint jacobian in a way that will accomodate a vector of control parameters rather than just one control parameter?

def jacobian(self, m):

Viii = volfrac(m[0],m[1],m[2],m[3],m[4],m[5],m[6])

self.tmpvec.vector()[:] = Viii

dintegral = assemble(derivative(self.tmpvec*dx,

return [-dintegral]

What should be at '
Are you using pyadjoint or dolfin-adjoint? I assume your controls P1,... , P7 are just scalars and not fields. It would be helpful if you included more code or details.

I wish to perform topology optimization so that I have more than one control parameter (P1 to P7). I have a function 'volfrac' that defines the volume fraction given these control parameters and so I intend integrate this to prescribe my volume constraint. The problem is the examples for structural optimization on the repository all have one parameter as the control (usually density). How do I define the volume constraint jacobian in a way that will accomodate a vector of control parameters rather than just one control parameter?

def jacobian(self, m):

Viii = volfrac(m[0],m[1],m[2],m[3],m[4],m[5],m[6])

self.tmpvec.vector()[:] = Viii

dintegral = assemble(derivative(self.tmpvec*dx,

**?**))return [-dintegral]

What should be at '

**?**' since my m is a vector ie. m = (Control(P1), Control(P2)........Control(P7))?
Community: FEniCS Project

written
12 weeks ago by
Miguel

Please login to add an answer/comment or follow this question.