OpenCMISS / iron

Source code repository for OpenCMISS-Iron
9 stars 62 forks source link

Boundary conditions for complicated multi-physics problems #51

Open chrispbradley opened 7 years ago

chrispbradley commented 7 years ago

At the moment the boundary conditions object is derived from the solver equations object. Now boundary conditions are technically applied to DOFs, that is a particular field DOF is flagged in some way e.g., fixed at a certain value. These fixed DOFs in turn affect the solution matrices i.e., rows and columns are eliminated from the equations matrices. This is why the BCs are set as part of the solver equations. However, for complicated workflows this is not so straight forward. I may have multiple solvers in a control loop. These solvers may each have a solver equations. These solver equations, however, may involve the same field variables. What if a BC was set on a DOF in one set of solver equations but not in the other? What if one BC value was set for a DOF in one equations set but a different BC value on the same DOF in the next equations set? Maybe the BC values should not be set as part of the fixed,free API and just take the value from current field variable value. Now it may be that we are doing some sort of iteration between different solvers and so we may want to fix and free the same DOF in different solves? Thus we do need a way of fixing and freeing DOFs on a solver equations level. I don't think it makes sense to have different DOF values??? There are also constraint conditions that we need to allow for e.g., linear constraints between DOFs. This issue is set up to discuss changes to the BC setting API.