generalisation of boundary conditions
Right now, the possibilities of Griphfith with respect to boundary conditions are rather limited. To make the library also applicable for more complicated use cases/ specimen, the idea is to generalise the application of Dirichlet- and Neumann-BCs. To be more precise:
- Being able to apply BCs on multiple node sets. Ultimately, the user will have an (external) mesh with specified node sets at which the BCs shall be applied.
- The library should loop through all given node sets and depending on the type of BC, either: (a) apply the BC directly on the corresponding DOFs or (b) compute the traction vector along an edge/ surface etc.
- Add the possibility to also impose Dirichlet BCs directly on the phase-field. This is so far only possible with a workaround by setting the nodeset
MESH.idx_notch
. I.e. analogously to the displacement BCs, it shall be possible to let the user define a nodeset, for which the phase-field shall take the value 0 or 1.
Ultimately, the user specification should look similar to this:
BCs = {[nodeset_A, 'Dirichlet', u_x] [nodeset_B, 'Dirichlet', d] [nodeset_C, 'Neumann', t_x, t_y]}
The boundary-condition routine then loops through all of the elements of the BCs
-struct, and treats them in this example as follows:
- nodeset_A/B: directly set the values for
u_x
,d
at the corresponding DOFs of nodeset_A/B - nodeset_C: check if it concerns a single DOF, and if so, directly apply
t_x
,t_y
in the right-hand-side vector; otherwise, find corresponding element (edges) and integrate over them to obtain the traction vector which will be added at the corresponding DOFs in the right-hand-side vector.
These changes imply:
-
the internal plate mesh function should return the nodesets for the edges, i.e. move the functionality of phase_field.fem.bc.edge_boundaries.m
intospecimen.internal.plate.m
such that it corresponds to the functionalities of loading an external mesh of Abaqus, GMSH, ...
Edited by jheinzmann